MySQL未定义的变量错误

时间:2016-01-01 20:39:47

标签: php mysql mysqli

我有一个包含MyPrice,MyStock等列的数据库。 每个产品有几行 - 苹果,桃子等。

我正在尝试使用以下代码提取有关多个项目的价格/库存状态的数据,但我得到的错误如下:

Notice: Undefined variable: sql on line 11

Warning: mysqli::query(): Empty query on line 11

Notice: Undefined variable: prices on line 45

Notice: Trying to get property of non-object on line 45

$dbhost =   'zzz';
$dbuser =   'zzz'; 
$dbpwd  =   'zzz'; 
$dbname =   'zzz';

$conn = new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );                
$res = $conn->query( $sql );

$item1 = "apple";
$item2 = "peach";

$items=array( $item1, $item2 );
$sql='select * from products where `Name` in ("'.implode('","',$items).'");'; //line 11

if( $res ){

    $i=0;/* counter for dynamic variables */
    $prices=new stdClass;

    while( $rs=$res->fetch_object() ){
        $i++;

        /* Populate an object with details for the product */
        $prices->{ strtolower( $rs->name ) }=(object)array( 'price'=>$rs->MyPrice, 'description'=>$rs->MyDescription, 'stock'=>$rs->MyStock );

    }
}   
?>  

echo 'Apple:'.$prices->apple->price . '<br />'; //line 45
echo 'Peach:'.$prices->peach->stock . '<br />';

导致问题的原因是什么?

4 个答案:

答案 0 :(得分:2)

我已根据您获得的错误调试了您的代码。 无论如何,信息应该引导你自己解决问题, 特别是如果它们清晰明显的话。 如果您总是让其他人调试您的代码,那么您将无法学到任何东西。

db.collections.aggregate([ 
    { "$project": { "count": { "$size": "$Documents" } } } 
] )

答案 1 :(得分:1)

移动$ res = $ conn-&gt;查询($ sql); 第12行

同时删除结尾 ?&GT; 并在文件末尾放置

答案 2 :(得分:0)

这是你的第一个罪犯:

$sql='select * from products where `Name` in ("'.implode('","',$items).'");';

在尝试将其连接到sql语句之前,你应该破坏$ items。

类似的东西:

$item_text = implode('","',$items);
$sql='select * from products where `Name` in ("'.$item_text.'");';

老实说,这段代码有点混乱。您应该使用PDO或mysql而不是两者都清理它。

答案 3 :(得分:0)

这是一个开始

$dbhost =   'zzz';
$dbuser =   'zzz'; 
$dbpwd  =   'zzz'; 
$dbname =   'zzz';

$conn = new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );                

$item1 = "apple";
$item2 = "peach";

$items=array( $item1, $item2 );
$item_text = implode('","',$items);
$sql='select * from products where `Name` in ("'.$item_text.'");'; //line 11

$res = $conn->query( $sql );

if( $res ){

    $i=0;/* counter for dynamic variables */
    $prices=new stdClass;

    while( $rs=$res->fetch_object() ){
        $i++;

        /* Populate an object with details for the product */
        $prices->{ strtolower( $rs->name ) }=(object)array( 'price'=>$rs->MyPrice, 'description'=>$rs->MyDescription, 'stock'=>$rs->MyStock );

    }
}   


echo 'Apple:'.$prices->apple->price . '<br />'; //line 45
echo 'Peach:'.$prices->peach->stock . '<br />';

?>