gpt4 book ai didi

php - 将数组/字符串用于 mysqli 准备语句

转载 作者:行者123 更新时间:2023-11-29 00:13:10 25 4
gpt4 key购买 nike

我遇到了 mysqli 准备语句的问题。这可能是一些菜鸟的错误;我对这样的事情不太熟悉。感谢您的帮助。

我有两个数组,$alpha[]$bravo[]。两者都有 20 对,但为了简化:

$alpha = array('name', 'age', 'color');
$bravo = array(
'name' => 'John Doe',
'age' => 22,
'color' => 'blue',
);

我想通过使用 $alpha[] 定义列标题,然后绑定(bind)来自 的数据,将来自 $bravo[] 的数据插入到我的表中$bravo[] 到查询,然后执行查询。这是我想做的事情的一个例子:

$columns = implode(',', $alpha);
$query_values = '?,?,?';
$query = "INSERT INTO table ($columns) VALUES ($query_values)";

$type = 'sis';
$real_values = implode(',', $bravo);

if($stmt = $mysqli->prepare($query)){
$stmt->bind_param($type, $real_values);
if($stmt->execute()){
// success
}
}

这对我不起作用 - 非常感谢你们提供的任何帮助或见解(包括完成我想做的事情的其他方法)。


最佳答案

将 bind_param 更改为

$stmt->bind_param($type, $bravo[0], $bravo[1], $bravo[2]);

虽然上述方法可行,但它并不是完美的解决方案,因为它需要您在每次要添加/删除列数据时更改 mysqli_bind_param 的参数。

这是解决方案,以正确的工作流程为例:

// returns an array of associative values
function ref_array_keys($arr) {
$refs = array();

foreach ($arr as $key => $value)
{
$refs[$key] = &$arr[$key];
}

return $refs;
}

$data = array('name' => 'John Doe', 'email' => 'user@domain.com', 'color' => 'red');
$type = 'sss';

$cols = implode(',', array_keys($data));
$vals = implode(',', array_fill(0, count($data), '?'));
$query = "INSERT INTO table_name ($cols) VALUES ($vals)";

if ($stmt = new mysqli($query))
{
call_user_func_array(array($stmt, "bind_param"), array_merge(array($type), ref_array_keys($data)));
}

ref_array_keys() 函数来源:https://stackoverflow.com/questions/3681262/...

关于php - 将数组/字符串用于 mysqli 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967522/

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