gpt4 book ai didi

php - MySQLi Bind Param 与 IN 的数组

转载 作者:行者123 更新时间:2023-12-03 20:22:03 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





mysqli bind_param for array of strings

(7 个回答)


去年关闭。




我正在尝试将数组传递给 $stmt->bind_param作为一个 IN 变量。我怎样才能做到这一点?

$values = array('a','b','c','d');
$values = '"' . implode('","', $values) . '"';

$stmt->prepare('SELECT value1, value2 FROM table1 WHERE value3 IN (?)');
$stmt->bind_param('s', $values);

我无法让它为我的生活工作。有什么想法吗?上面的代码只是一个示例。

最佳答案

它可以但不应该 完成,因为它是难以维护的代码(阅读、理解、调试、更改)。
一种方法是使用动态变量来提供可自动引用的变量,并使用 call_user_func_array 为回调/方法提供动态数量的参数 $stmt->bind_param() .

<?php
$values = array('a','b','c','d');

$s = substr( str_repeat( ' , ?' , count( $values ) ) , 2 );
$stmt->prepare('SELECT value1, value2 FROM table1 WHERE value3 IN (' . $s . ')');
# OR array_map in case of different datatypes
$typeDefintions = str_repeat( 's' , count( $values ) );
$params = array( $typeDefinitions );
foreach ( $values as $k => $v ) {
${ 'varvar' . $k } = $v;
$params[] = &${ 'varvar' . $k };# provide references
}
call_user_func_array( array( $stmt , 'bind_param' ) , $params );

关于php - MySQLi Bind Param 与 IN 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com