2016-01-21 2 views
2
<?php 

$sql="SELECT * FROM products WHERE id_product IN ("; 

foreach($_SESSION['cart'] as $id => $value) { 
    $sql.=$id.","; 
} 

$sql=substr($sql, 0, -1).") ORDER BY name ASC"; 
$query=mysql_query($sql); 
$totalprice=0; 

while ($row=mysql_fetch_array($query)){ 
    $subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price']; 
    $totalprice+=$subtotal; 
    ?> 
    <tr> 
     <td><?php echo $row['name'] ?></td> 
    <td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td> 
    <td><?php echo $row['price'] ?>$</td> 
    <td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td> 
    </tr> 
    <?php    
    } 
?> 
<tr> 
    <td>Total Price: <?php echo $totalprice ?></td> 
</tr> 

Это код, который я использую в настоящее время. Очевидная ошибка я получаю:Изменение mysql_fetch_array на эквивалент PDO

Fatal error: Uncaught Error: Call to undefined function mysql_query()

Я знаю, что нужно изменить его на PDO, но я не уверен, что заменить mysql_fetch_array с в то время как все еще получаю totalprice я хочу.
После изменения его к этому:

foreach($_SESSION['cart'] as $id => $value) { 
    $sql.=$id.","; 
} 

$sql=substr($sql, 0, -1).") ORDER BY name ASC"; 
$stmt = $db->prepare($sql); 
$stmt->execute(); 
$totalprice=0; 

Я уверен в том, как действовать, пока еще не занижено ли полная стоимость

+0

Параметр '' mysql_ * функция была удалена, пожалуйста, посмотрите на любой '' PDO' или MySQLi' на [php.net] (HTTP: // PHP .сеть/). – Tom

+0

С 'PDO'' mysql_fetch_array() 'is' $ conn-> fetchAll() 'где' $ conn' - это переменная соединения. – Tom

ответ

0
$sql="SELECT * FROM products WHERE id_product IN ("; 

foreach($_SESSION['cart'] as $id => $value) { 
    $sql.=$id.","; 
} 

$sql=substr($sql, 0, -1).") ORDER BY name ASC"; 
$stmt = $db->prepare($sql); 
$stmt->execute(); 
$totalprice=0; 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); # FOr mysql_fetch_assoc 

foreach ($result as $index=>$arr) { 
    // $val = $arr['key']; 
} 

Чистый путь MySQL:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) { 
    // $val = $row['key']; 
} 

Для mysql_fetch__array:

Вы можете использовать PDO :: FETCH_NUM

Ссылка: http://php.net/manual/en/pdostatement.fetchall.php

http://micmap.org/php-by-example/manual/de/pdostatement.fetch.html

+0

Я получаю сообщение об ошибке: Предупреждение: Недействительный аргумент, предоставленный foreach() В строке: 'foreach ($ _ SESSION ['cart'] as $ id => $ value) {' –

+0

Это beacue $ _SESSION ['cart '] должен быть массивом. это не массив? Проверьте тип $ _SESSION ['cart'] с помощью echo gettype ($ _ SESSION ['cart']); –