gpt4 book ai didi

php - 错误 : class to INSERT content into MySQL database

转载 作者:行者123 更新时间:2023-11-29 01:50:27 24 4
gpt4 key购买 nike

我最近开始在 PHP 中使用 OOP,并且开始使用我相当熟悉的函数。我一直在研究与 MySQL 数据库连接的数据管理系统。在将内容插入数据库并收到此错误时,我遇到了问题:

Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables ... on line 140

这是我的代码:

public function create_val( $content_array, $table )
{
$array_num = count($content_array);

// create value holders
$value_param = str_repeat( '?, ', $array_num );
$stmt_values = rtrim($value_param, ', ');

// create bind params
$stmt_param = str_repeat('s', $array_num);


foreach($content_array as $key => $value)
{
$key_val[] = $key;
$val[] = $value;
}

$table_rows = implode(', ', $key_val);
$insert_val = implode(', ', $val);

$sql = "INSERT " . $table . " (" . $table_rows . ") VALUES (" . $stmt_values . ")";

if($stmt = $this->_connection->prepare( $sql ))
{
try
{
$stmt->bind_param($stmt_param, $insert_val);
$stmt->execute();
$stmt->close();
}
catch(Exception $e)
{
echo "There was an unexpected problem. " . $e->getMessages();
}
}
}

我知道错误是由这一行引起的:$stmt->bind_param($stmt_param, $insert_val);

但我就是不明白为什么;我已经检查了 $stmt_param$insert_val 并且它们在数量上匹配 - 在我正在运行的这个特定尝试中。

值作为 $key => $value 对插入。这是我调用类的设置:

$array = array(
'column1' => 'an item',
'column2' => 'a second content',
'column3' => 'some information',
'column4' => 'what what what???'
);
$db->create_val($array, 'table_name');

我对这个函数的目标是尽可能地使其可重用和模块化。我看过许多类似的问题,但没有找到我可以使用的问题。即使涉及类,它们也不是真正可用于不同目的的可重用,而我的目的是可重用。

最佳答案

从 PHP 5.6 开始,您可以使用 unpacking operator 调用 bind_param 函数,它允许您直接调用它(无需使用 call_user_func_array),只需更改此行...

$stmt->bind_param($stmt_param, ...$val);

关于php - 错误 : class to INSERT content into MySQL database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901891/

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