- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 call_user_func_array
将参数绑定(bind)到 sql 语句,如 Dynamically Bind Params in Prepared Statements with MySQLi 中所述;但是,我的 mysqli_prepare
一直返回 false。
这里是我调用来存储数据的数据函数:
function storeData($form_data, $table_name, $cxn){
if(!is_array($form_data)){
return false;
exit();
}
$types = str_repeat("s", count($form_data));
$params = array();
$params[] = &$types;
$keys = array_keys($form_data);
$values = array_values($form_data);
for ($i = 0; $i < count($values); $i++) {
$params[] = &$values[$i];
}
$sql = "INSERT INTO $table_name (" . implode(',', $keys) . ") VALUES (" .
implode(',', array_fill(0, count($values), '?')) . ")
ON DUPLICATE KEY UPDATE ";
$updates = implode(',', array_map(function($col) {
return "$col = VALUES($col)";
}, $keys));
$sql .= $updates;
if($stmt = mysqli_prepare($cxn, $sql)){
call_user_func_array(array($stmt, 'bind_param'), $params);
return mysqli_stmt_execute($stmt);
}
这是准备时我的 $sql
字符串:
$sql"INSERT INTO interest (Baseball,Basketball,Camping,Canoeing,Cycling,Football,Gaming,Golf,Hiking,Parks,Photography,Runway,Skydiving,Soccer,Username) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE Baseball = VALUES(Baseball),Basketball = VALUES(Basketball),Camping = VALUES(Camping),Canoeing = VALUES(Canoeing),Cycling = VALUES(Cycling),Football = VALUES(Football),Gaming = VALUES(Gaming),Golf = VALUES(Golf),Hiking = VALUES(Hiking),Parks = VALUES(Parks),Photography = VALUES(Photography),Runway = VALUES(Runway),Skydiving = VALUES(Skydiving),Soccer = VALUES(Soccer),Username = VALUES(Username)"
这是我的 $params
和 $key
输出:
$keysarray[15]
$keys[0]"Baseball"
$keys[1]"Basketball"
$keys[2]"Camping"
$keys[3]"Canoeing"
$keys[4]"Cycling"
$keys[5]"Football"
$keys[6]"Gaming"
$keys[7]"Golf"
$keys[8]"Hiking"
$keys[9]"Parks"
$keys[10]"Photography"
$keys[11]"Runway"
$keys[12]"Skydiving"
$keys[13]"Soccer"
$keys[14]"Username"
$paramsarray[16]
$params[0]"sssssssssssssss"
$params[1]"0"
$params[2]"0"
$params[3]"0"
$params[4]"0"
$params[5]"0"
$params[6]"0"
$params[7]"0"
$params[8]"0"
$params[9]"0"
$params[10]"0"
$params[11]"0"
$params[12]"0"
$params[13]"0"
$params[14]"0"
$params[15]"test0613"
$valuesarray[15]
$values[0]"0"
$values[1]"0"
$values[2]"0"
$values[3]"0"
$values[4]"0"
$values[5]"0"
$values[6]"0"
$values[7]"0"
$values[8]"0"
$values[9]"0"
$values[10]"0"
$values[11]"0"
$values[12]"0"
$values[13]"0"
$values[14]"test0613"
最佳答案
我试图映射的列中存在错误,但该列并不存在。发现错误程序here ,这让我产生了 fatal error ,指出我引用的表中不存在一列。
关于php - mysqli_prepare 查询返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44556899/
我有一个插入查询,我一直在整个网站使用它。工作完美,我在这个网页中使用了 came 查询,但已经向查询添加了验证。我现在已经运行了查询,但收到以下错误: Undefined variable: run
我正在尝试使用 call_user_func_array 将参数绑定(bind)到 sql 语句,如 Dynamically Bind Params in Prepared Statements wi
This article PHP 手册的一部分在此处使用 mysqli_prepare(),而在其他所有地方使用 mysqli_stmt_*。 然而,在this article在 PHP 手册中,它使
哪个更快: 1. $name = $sql->real_escape_string($_POST['name']); $age = $sql->real_escape_string($_POST
我有一些存储过程,成功后以: select 1 as outcome; 这样我就知道它成功了。 在 PHP 中我的代码是这样的: if ($stmt = mysqli_prepare($con, "c
我是一名优秀的程序员,十分优秀!