我有一个mysqli表,其值如下:-
id | price
65| 7000
67| 7001
和一个PHP代码使用数组变量回显两者:-
require('setup.php'); // got connection
$array = array(0 => 65, 1 => 67);
$d = implode("," , $array);
$sql = "SELECT price FROM trade WHERE id IN('$d')";
$query = mysqli_query($conn, $sql);
if($query){
while ($row = mysqli_fetch_array($query)) {
echo $row['price'].'<br>';
}
}
else {
echo mysqli_error($conn);
}
输出应为
7000
7001
但是只有7000
。
答案 0 :(得分:1)
在IN()
标记中删除多余的单引号。
更正的代码:
$sql = "SELECT price FROM trade WHERE id IN($d)";
$sql
输出:
SELECT price FROM trade WHERE id IN(65,67)
您可以检查代码here:
答案 1 :(得分:1)
用引号传递$d
会使IN('65,66')
在执行期间看起来像这样,因此您需要删除它,因为根据默认约定,您只需要传递一个数组。因此,将查询更改为:
SELECT price FROM trade WHERE id IN($d)
答案 2 :(得分:1)
在执行IN(65,67)
时需要执行IN('65,67')
因此,请删除'
附近的$d
代码必须为:-
$sql = "SELECT price FROM trade WHERE id IN($d)";
注意:- 使用fetch_assoc()
简化数组迭代(因为它仅提供关联数组结果集)
while ($row = mysqli_fetch_assoc($query)) {
答案 3 :(得分:1)
按如下所示编辑查询,
$sql = "SELECT price FROM trade WHERE id IN($d)";
希望这会有所帮助。
答案 4 :(得分:1)
请检查您的SQL查询
$sql = "SELECT price FROM trade WHERE id IN('$d')";
请按如下所示更改此查询:
$sql = "SELECT price FROM trade WHERE id IN($d)";
您不应将单引号与php变量一起使用。
答案 5 :(得分:0)
尝试这样的事情:
require('setup.php');
$array = [65, 67];
$d = implode(',', $array);
$sql = "SELECT price FROM trade WHERE id IN($d)";
$query = mysqli_query($conn, $sql);
if($query){
while ($row = mysqli_fetch_assoc($query)) {
echo $row['price'].'<br>';
}
}
else {
echo mysqli_error($conn);
}