我正在使用SELECT * FROM products WHERE id IN ('$arrayImplodedToStr')
SQL查询来从数据库中同时获取多个值。该查询工作正常,因为当我回显$q
时,我可以看到所有数组项在查询中都转换为ID号,并且它们很多。但是,当我进行查询并将其存储在数组中,然后在mysqli_fetch_assoc()
循环内使用while
来获取查询中的所有行时,我总是只得到第一项。而且不知道为什么吗?
代码:
session_start();
require_once('navigation.php');
require_once('database_connection.php');
if(empty($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
array_push($_SESSION['cart'], $_GET['product_id']);
$arrayImplodedToStr = implode(',', $_SESSION['cart']);
$q = "SELECT * FROM products WHERE id IN ('$arrayImplodedToStr')";
$result = mysqli_query($dbc, $q);
mysqli_query($dbc, $q);
$allRows = [];
while($row = mysqli_fetch_assoc($result)) {
$allRows[] = $row;
}
foreach ($allRows as $cartItems) {
echo $cartItems['name'];
}
谢谢。
答案 0 :(得分:2)
您不希望在数组字符串周围加上引号。这将使它全部成为一项,并且-如果是数字,则将其截断为找到的第一个。
如果保证各个项目都是数字,请删除引号。如果在那里可能有文本字符串,则需要用引号将字符串中的每个项目都用引号引起来,例如用'a', 'b', 'c'
代替'a, b, c'
答案 1 :(得分:-2)
您可以使用
$ result = mysqli_fetch_all($ mysqli-> query($ query)