2013-10-10 6 views
0

У меня есть название продукта и вы хотите выбрать путь загрузки. В соответствии с этим, я получаю сообщение об ошибкесценарий pdt не будет выбирать из db

Предупреждение: mysql_num_rows() ожидает параметр 1, чтобы быть ресурсом, логический дан в ...

Это как нет такой записи.

<?php 
$keyarray=array('num_cart_items'=>2, 'item_name2'=>'5', 'item_name1'=>'6'); 
$itemname=''; 
for ($i=1; $i<= $keyarray['num_cart_items'] ;$i++){ 
     $itemname[]= $keyarray['item_name'.$i];}; 

    foreach($itemname as & $var){ 
    echo $var; 
    $sql = mysql_query("SELECT * FROM products WHERE product_name='$var' "); 
    $productCount = mysql_num_rows($sql); // count the output amount 
    $checkout_path =""; 
    if ($productCount > 0) { 

     // get path 
     $row = mysql_fetch_array($sql); 
       $path = $row["path"]; 
       $checkout_path[]=array('path'=>$path); 

      echo $checkout_path; 
     } 
    } 
    //echo $checkout_path; 
?> 
+0

Что значение '$ var'? Если есть плохие символы (например, одинарная кавычка), это нарушит ваш запрос! Вы действительно должны использовать MySQLi/PDO, чтобы вы могли это подготовить. –

+0

Это весь скрипт? Я не вижу строку подключения к БД. – aaron

ответ

0

взгляд первый, если у вас есть ошибки после выполнения запроса

echo mysql_errno() . ": " . mysql_error() . "\n"; 

также о результатах, вы можете иметь более одного результата, так что вам нужно сделать цикл по каждому элементу в GRT все из них как:

while ($row = mysql_fetch_array($sql)) { 

} 

другое примечание предотвратить с помощью mysql_* функции, потому что:

Это расширение устарело от PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

0

В начале сценария вы объявили $itemname=''; как строку , а затем позже использовал его как массив $itemname[]= $keyarray['item_name'.$i];};.

Используйте $itemname=array();, чтобы обсудить его как массив.

И использовать либо PDO или mysqli как mysql устарела и не поддерживается в более поздних версиях