call_user_func_array错误和mysqli_stmt_execute错误

时间:2017-06-13 01:45:16

标签: php html mysql mysqli

我似乎无法弄清楚出了什么问题以及为什么我会一直收到这些错误

  

警告:call_user_func_array()期望参数1是有效的回调,第一个数组成员不是{i> 37 上C:\xampp\htdocs\test-site\php\include\dataFunc.inc的有效类名或对象   警告:mysqli_stmt_execute()期望参数1为mysqli_stmt,在C:\ dataFunc.inc中给出布尔值 38

我检查并阅读了php文档,$smtmysqli_prepare返回的反对意见,但这是我的功能:

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;

$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)"
$stmt?
$table_name"interest"
$types"sssssssssssssss"
$updates"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)"

0 个答案:

没有答案