получение значений для PHP-массива - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть запрос ниже в php, и я хочу извлечь значения из массива и хочу использовать их в функции без цикла foreach. Но значения, которые я получаю из массива, неверны. Я не могу понять, что здесь не так, поскольку я новичок в PHP.

$sql="SELECT * FROM `mlm_pending_transactions` WHERE member_id = $_SESSION[member_id] and cycle=$cycle_number and credited=0 and order_type='upgrade_commission_cash'";
$result=mysql_query($sql);                                                                  
while($data_set = mysql_fetch_array($result))
{                                                                            
   foreach($data_set as $cash_pendings)
   {
      echo $cash_pendings["member_id"]."</br>";
      echo $cash_pendings['tran_amount']."</br>";
      echo $cash_pendings['tran_particulars']."</br>";
      echo $cash_pendings['id'];
    }
}

1 Ответ

0 голосов
/ 29 апреля 2018

Все, что вам нужно, это значения из массива, возвращаемого mysql_fetch_array ()

$sql="SELECT * FROM `mlm_pending_transactions` WHERE member_id = $_SESSION[member_id] and cycle=$cycle_number and credited=0 and order_type='upgrade_commission_cash'";
$result=mysql_query($sql);                                                                  
while($data_set = mysql_fetch_array($result))
{                                                                        
      echo $data_set["member_id"]."</br>";
      echo $data_set['tran_amount']."</br>";
      echo $data_set['tran_particulars']."</br>";
      echo $data_set['id'];
}

Обратите внимание, что если имена полей неверны (они чувствительны к регистру), то значения не будут возвращены.

Вы можете использовать print_r ($ data_set) для проверки возвращаемых имен полей, если вы не уверены.

РЕДАКТИРОВАТЬ - Изменения для вашей фактической ошибки.

Абсолютный минимум. Примечание не проверено, так что, возможно, некоторые опечатки.

<?php

$sql="SELECT * 
    FROM `mlm_pending_transactions` 
    WHERE member_id = $_SESSION[member_id] 
    AND cycle = $cycle_number 
    AND credited = 0 
    AND order_type = 'upgrade_commission_cash'";
$result = mysql_query($sql);   

while($data_set = mysql_fetch_array($result))
{                                                                        
      echo $data_set["member_id"]."</br>";
      echo $data_set['tran_amount']."</br>";
      echo $data_set['tran_particulars']."</br>";
      echo $data_set['id'];

    $date = date("m/d/Y");
    $time = strtotime("now");

    $add_cash = $affiliate->add_fin_tran($data_set["member_id"],
                                $data_set["tran_amount"],
                                0,
                                $data_set["tran_particulars"],
                                "upgrade_commision_cash",
                                1);

    $sql2 = "UPDATE mlm_pending_transactions
        SET credit = 1,
        credited_date = '$date',
        credited_time = '$time'
        WHERE id = ".$data_set["id"];

    $result2 = mysql_query($sql2);

}

?>

Однако, как уже говорили другие, вы используете устаревшую функцию mysql_ *. Далее у вас нулевая защита от внедрения SQL.

Вы должны использовать один из более новых методов доступа к базам данных. Обычно это либо функции mysqli_ *, либо функции на основе pdo. Обратите внимание, что для их использования вам также потребуется переключить функцию для подключения к базе данных (к соответствующим).

Например, используя функции mysqli_ (вы также можете использовать их, используя объектно-ориентированный синтаксис): -

<?php

$sql = "SELECT * 
    FROM `mlm_pending_transactions` 
    WHERE member_id = ?
    AND cycle = ?
    AND credited = ? 
    AND order_type = ?";
$statement = mysqli_prepare($db_connection, $sql); 
mysqli_stmt_bind_param($statement, 'iiis', $_SESSION['member_id'], $cycle_number, 0, 'upgrade_commission_cash');
mysqli_execute($statement);   
$result = mysqli_get_result($statement);   

while($data_set = mysqli_fetch_array($result, MYSQLI_ASSOC))
{                                                                        
      echo $data_set["member_id"]."</br>";
      echo $data_set['tran_amount']."</br>";
      echo $data_set['tran_particulars']."</br>";
      echo $data_set['id'];

    $date = date("m/d/Y");
    $time = strtotime("now");

    $add_cash = $affiliate->add_fin_tran($data_set["member_id"],
                                $data_set["tran_amount"],
                                0,
                                $data_set["tran_particulars"],
                                "upgrade_commision_cash",
                                1);

    $sql2 = "UPDATE mlm_pending_transactions
        SET credit = ?,
        credited_date = ?,
        credited_time = ?
        WHERE id = ?";

    $statement2 = mysqli_prepare($db_connection, $sql2);    
    mysqli_stmt_bind_param($statement2, 'issi', 1, $date, $time, $data_set["id"]);
    $result2 = mysqli_execute($statement2);   


}

?>

Использование объектно-ориентированного синтаксиса: -

<?php

$sql = "SELECT * 
    FROM `mlm_pending_transactions` 
    WHERE member_id = ?
    AND cycle = ?
    AND credited = ? 
    AND order_type = ?";
$statement = $db_connection->prepare($sql); 
$statement->bind_param('iiis', $_SESSION['member_id'], $cycle_number, 0, 'upgrade_commission_cash');
$statement->execute();   
$result = $statement->get_result();   

while($data_set = $result->fetch_array(MYSQLI_ASSOC))
{                                                                        
      echo $data_set["member_id"]."</br>";
      echo $data_set['tran_amount']."</br>";
      echo $data_set['tran_particulars']."</br>";
      echo $data_set['id'];

    $date = date("m/d/Y");
    $time = strtotime("now");

    $add_cash = $affiliate->add_fin_tran($data_set["member_id"],
                                $data_set["tran_amount"],
                                0,
                                $data_set["tran_particulars"],
                                "upgrade_commision_cash",
                                1);

    $sql2 = "UPDATE mlm_pending_transactions
        SET credit = ?,
        credited_date = ?,
        credited_time = ?
        WHERE id = ?";

    $statement2 = $db_connection->mysqli_prepare($sql2);    
    $statement2->bind_param('issi', 1, $date, $time, $data_set["id"]);
    $result2 = $statement2->execute();   


}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...