我正在使用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'];
}
您不希望数组字符串周围有引号。这将使它成为一个项目,并且 - 在数字的情况下 - 将其截断为找到的第一个。
如果保证单个项目是数字,请删除引号。如果可能的文本字符串在那里,你需要引用各个项目的字符串,如'a', 'b', 'c'
代替'a, b, c'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句