我有一个字符串,里面有水果名称和可用的颜色,用,
分隔。使用|
分离多个水果细节。
$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。它们都是更现代的数据库库,支持占位符等急需的功能。
为了给出更好的答案,下次还必须包含数据库结构。