【发布时间】:2019-12-11 07:03:02
【问题描述】:
我已经创建了可以插入数据库的函数,只需将 2 个参数传递给它 [表名,关联数组“表模式”]。该数组包含列名及其值。 首先是数组外观:
$tableSchema = [
'member_name' => $member_name,
'member_pass' => $member_pass,
'member_email' => $member_email,
'member_fullname' => $member_fullname,
'member_image' => $profileImage,
'member_role' => $member_role,
'member_gender' => $member_gender,
'member_phone' => $member_phone,
'member_country' => $member_country,
];
这就是我的功能代码:
function insertInto($table, $columns)
{
// This function to echo parameters at sql stmt
function setParams($columns)
{
$param = '';
foreach($columns as $key => $value) {
$param .= $key . ' = :' . $key . ', ';
}
return trim($param, ',');
}
$array = [];
foreach ($columns as $key => $value) {
array_push($array, $key);
}
global $db_connect;
$stmt = $db_connect->prepare('INSERT INTO '. $table .' SET '. setParams($columns) .'');
$stmt->execute($array); /* Here is my problem */
}
当我尝试运行函数时出现此错误:
致命错误:在 C:\xampp\htdocs\blogfive\core\functions\functions.php:87 中带有消息“SQLSTATE[HY093]:无效参数编号:未定义参数”的未捕获异常“PDOException”:87 堆栈跟踪: #0 C:\xampp\htdocs\blogfive\core\functions\functions.php(87): PDOStatement->execute(Array) #1 C:\xampp\htdocs\blogfive\dashboard\template\pages\members\insert。 member.php(65): insertInto('members', Array) #2 C:\xampp\htdocs\blogfive\dashboard\members.php(32): require_once('C:\xampp\htdocs...') # 3 {main} 在第 87 行的 C:\xampp\htdocs\blogfive\core\functions\functions.php 中抛出
【问题讨论】:
-
为什么需要嵌套函数?运行循环并使用结果设置一个字符串同样容易。