Php 如何使用循环绑定mysqli参数并将结果存储在数组中?
当Php 如何使用循环绑定mysqli参数并将结果存储在数组中?,php,arrays,mysqli,Php,Arrays,Mysqli,当dbGenre等于$genre时,上面的代码从genreID获取值。然后将结果存储在数组中。但它不起作用,因为$genre是一个数组,所以我需要循环遍历它,每次从genreID中获得不同的值 “流派”表包含两列:genreID(INT)和dbGenre(VARCHAR) 我只需要每个genreID(这是一个数字)。。。假设dbGenre等于Action时,将genreID存储在array1中,然后循环$genre数组以获取下一个值的genreID,并将其再次存储在array1中 我怎样才能修好
dbGenre
等于$genre
时,上面的代码从genreID
获取值。然后将结果存储在数组中。但它不起作用,因为$genre
是一个数组,所以我需要循环遍历它,每次从genreID
中获得不同的值
“流派”表包含两列:genreID(INT)和dbGenre(VARCHAR)
我只需要每个genreID(这是一个数字)。。。假设dbGenre等于Action时,将genreID存储在array1中,然后循环$genre数组以获取下一个值的genreID,并将其再次存储在array1中
我怎样才能修好它?有几件事
- 可能不是因为您覆盖了$genre变量,在sedond案例中尝试将其更改为$genrearay
- 确保数据库确实返回了内容(在phpMyAdmin或类似的程序中尝试)
- 请尝试这样处理:
不能将数组绑定到SQL参数。您可以在SQL中使用参数来代替单个文本值。不是值列表、表达式、列名或表名 要解决您案例中的任务,您可以使用以下两种解决方案之一: 第一个解决方案:循环
$genre
数组,一次绑定一个值,并对每个值执行SQL查询
$genreId = -1;
$stmt->bind_results($genreId);
$stmt->execute();
while($stmt->fetch()){
$genreArray[] = $genreId;
}
第二种解决方案:使用多个参数执行一次查询,数组中的每个值对应一个参数。这需要一些复杂的代码来构建SQL查询中数量可变的?
占位符,并用逗号分隔
$stmt->prepare($selectGenre_sql);
$genre = array();
foreach ($gengre as $genreID) {
$stmt->bind_param('s', $genreID);
$stmt->execute();
$stmt->bind_result($genres);
while ($stmt->fetch()) {
$genre[] = $genres;
}
}
此外,您还需要根据$genre
数组中的元素使用数量可变的参数调用bind_param()
:
$selectGenre_sql = 'SELECT genreID FROM genres WHERE dbGenre IN ('
. join(',', array_fill(0, count($genre), '?')) . ')';
您可能需要考虑使用<代码> pdoyMySQL < /Cord>,因为从数组中绑定参数更容易。在这种情况下,MySQLi界面非常笨拙。
我只需要每个genreID(这是一个数字)。。。。让我们说。。当dbgreen等于Action时,将genreID存储在数组中,然后循环获取下一个数组值的genreID。。$selectGenre_sql = 'SELECT genreID FROM genres WHERE dbGenre IN ('
. join(',', array_fill(0, count($genre), '?')) . ')';
$stmt->prepare($selectGenre_sql);
$temp = array();
foreach ($genre as $key => $value) {
$temp[] = &$genre[$key];
}
array_unshift($genre, str_repeat('i', count($genre)));
call_user_func_array(array($stmt, 'bind_param'), $genre);
$stmt->execute();
$stmt->bind_result($genres);
$array1 = array();
while ($stmt->fetch()) {
$array1[] = $genres;
}