[英]Getting only first entry php mysql
我有一个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
。
删除IN()
标记中多余的单引号。
更正的代码:
$sql = "SELECT price FROM trade WHERE id IN($d)";
$sql
输出:
SELECT price FROM trade WHERE id IN(65,67)
您可以在此处检查代码:
传递带有引号的$d
会使IN('65,66')
在执行期间看起来像这样,因此您需要删除它,因为根据默认约定,您只需要传递一个数组。 因此,将查询更改为:
SELECT price FROM trade WHERE id IN($d)
在执行IN('65,67')
需要执行IN(65,67)
IN('65,67')
所以去除'
围绕$d
代码必须是:-
$sql = "SELECT price FROM trade WHERE id IN($d)";
注意:-使用fetch_assoc()
进行较轻的数组迭代(因为它仅提供关联数组结果集)
while ($row = mysqli_fetch_assoc($query)) {
工作片段 : -http : //rextester.com/FEFBWZ40805
如下编辑查询,
$sql = "SELECT price FROM trade WHERE id IN($d)";
希望这可以帮助。
请检查您的SQL查询
$sql = "SELECT price FROM trade WHERE id IN('$d')";
请按如下所示更改此查询:
$sql = "SELECT price FROM trade WHERE id IN($d)";
您不应该在PHP变量中使用单引号。
尝试这样的事情:
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.