0

我有这个带有水果名称的字符串以及可用的颜色,由,. 多个水果细节使用|.

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

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

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. 查询应该只提取苹果和香蕉的记录。

我知道我的代码是正确的,但是当我echo()提取记录时,什么也没有打印出来!

请帮我找出问题所在。

* 更新 找到答案*

4

2 回答 2

1

改变:

$fruits = $row[fruits];

$fruits = $row['fruits'];

echo $fruits . <br />

echo $fruits . '<br />';
于 2012-07-17T09:10:30.083 回答
1

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

echo $fruits . <br />

调试这样的事情的正确方法是首先使您的代码可解析。然后找出您的查询是否符合您的预期:将 mysql_query() 更改为 print() 并查看您的查询是否正确。您可能正在查询您不希望查询的值,如果可用,您可以在 MySQL 控制台(或通过 phpMyAdmin)中运行查询,以查看它是否返回正确的值。

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

额外:您应该在以后的项目中放弃 mysql 并改用 mysqli 或 PDO。它们都是更现代的数据库,支持占位符等急需的功能。

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

于 2012-07-17T09:17:47.843 回答