我的这个字符串包含水果名称以及由,
分隔的可用颜色。使用|
分隔多个水果详细信息。
$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()
拉出记录时,什么都没有打印!。
请帮我解决问题。
*更新 找到答案 *
答案 0 :(得分:1)
变化:
$fruits = $row[fruits];
到
$fruits = $row['fruits'];
和
echo $fruits . <br />
到
echo $fruits . '<br />';
答案 1 :(得分:1)
这不是有效的PHP,我认为你的代码根本没有运行:
echo $fruits . <br />
调试这样的事情的正确方法是首先使您的代码可以解析。然后查明您的查询是否符合预期:将mysql_query()更改为print()并查看您的查询是否正确。您可能正在查询您不希望查询的值,并且您可以在MySQL控制台(或通过phpMyAdmin)运行查询(如果可用)以查看它是否返回正确的值。
然后添加一个调试语句,如var_dump($ row);在循环中,看看你是否真的从查询中得到任何东西,然后看看$ fruits的值是否与你期望的一样。
额外:您应该在将来的项目中删除mysql并使用mysqli或PDO。它们都是更现代的数据库库,支持占位符等所需的功能。
为了给出更好的答案,您还必须在下次包含数据库结构。