PHP-mysql_query()问题,WHERE子句格式错误


PHP - mysql_query() issue with malformed WHERE clause

我有一个字符串,里面有水果名称和可用的颜色,用,分隔。使用|分离多个水果细节。

$string = 'apple,red,green|banana,yellow,green';

在下面的代码中,我使用explode()仅提取水果名称。并使用水果名称从MySQL数据库中查询记录。

foreach ( explode( '|', $string ) as $fruitas ) {
  $data = explode( ',', $fruitas );
  $sql = mysql_query( "SELECT * FROM user WHERE fruits = '$data[0]' ") or die ( mysql_error() );
  while ( $row = mysql_fetch_array( $sql ) ){
    $fruits = $row['fruits'];
    echo $fruits . '<br />';
  }
}

$data[0]具有果实的名称。

我期望以下输出:

APPLE    20
BANANA   20

因为苹果和香蕉是$string中的水果名称。Query应该只提取苹果和香蕉的记录。

我知道我的代码是正确的,但当我echo()提取的记录时,没有打印任何内容!。

请帮我解决这个问题。

*更新找到答案*

更改:

$fruits = $row[fruits];

$fruits = $row['fruits'];

echo $fruits . <br />

echo $fruits . '<br />';

这是无效的PHP,我认为您的代码根本没有运行:

echo $fruits . <br />

调试这样的东西的正确方法是首先使代码可解析。然后看看你的查询是否是你期望的:把mysql_query()改成print(),看看你的询问是否正确。您可能正在查询您不希望查询的值,您可以在MySQL控制台中运行查询(或通过phpMyAdmin)(如果可用),查看它是否返回正确的值。

然后添加调试语句,例如var_dump($row);在循环中,看看你是否真的从查询中得到了什么,然后看看$fruits的值是否是你期望的。

额外:您应该在未来的项目中删除mysql,转而使用mysqli或PDO。它们都是更现代的数据库库,支持占位符等急需的功能。

为了给出更好的答案,下次还必须包含数据库结构。