如何显示查询的所有结果?如果我的$ author打印为Array([0] => 1),则查询会提取正确的数据。但是,如果我的$ author打印为Array([0] => 1 [1] => 8)或从我的表单收到的值的任意组合,则返回空。
阵列打印正确,所以我从那一点开始前进,假设问题是查询,但无法弄明白。
$query = "SELECT * FROM estudos";
if (isset($author)){
$query.=" WHERE author='" . implode ($author) ."'";
print_r ($author);
}
这是我的php和html ......
$results=$dbclient->query($query) or die(mysqli_error());
<?php
while($row=mysqli_fetch_array($results))
echo"<tr><td class='name'>$row[name]</td>";
?>
答案 0 :(得分:2)
您错过了implode()
的glue
参数。没有它,你的$query
看起来像这样:
SELECT * FROM estudos WHERE author='FooBarBaz'
这是一个语法上有效的SQL查询,但它不能做你想要的。
您可能正在寻找IN
条款。
$query .= " WHERE author IN (" . implode (',', $author) .")";
请注意,我没有修复查询中的SQL injection个漏洞。我建议您切换到MySQLi或PDO并开始使用参数化查询以免SQL注入。
答案 1 :(得分:1)
您需要在SQL查询中使用IN条件
$query.=" WHERE author IN (" . implode (',',$author) .")";
如果作者是字符串,则代码将是
if (isset($author)){
$query . = "("
foreach ($author as $value)
{
$query .= "'".$value."',";
}
$query = substr($query,0,-1);
$query .= ")";
print_r ($author);
}
答案 2 :(得分:0)
可能作者姓名将是字符串,您应该将其格式化,如下所示
IN ('author1', 'author2')
一个可以帮助你的PHP功能
function quote($str) {
return sprintf("'%s'", $str);
}
$authors = array('author1', 'author2', 'author3');
WHERE author IN (implode(',', array_map('quote', $authors)));