我的代碼來生成SQL語句工作正常 - 但是當生成$ stmt-> bind_param字符串時,我遇到了一個呃逆。代碼如下:PHPs mysqli prepare - 動態生成
$stmt = $mysqli->stmt_init(); if ($stmt->prepare ($sql)) { $bind_types = '"'; $bind_values = '';
if ($action == 'insert' || $action == 'update') {
reset ($array);
foreach ($array as $key => $value) {
if (is_string ($value)) { $type = 's'; } else if (is_int ($value)) { $type = 'i'; } else if (is_float ($value)) { $type = 'd'; } else { die ('Cannot determine type for ' . $key . ' => ' . $value . ''); }
$bind_types .= $type;
$bind_values .= $value . ', ';
//$stmt->bind_param ($type, $value);
}
}
if ($action == 'update' || $action == 'delete') {
if (is_string ($id_value)) { $type = 's'; } else if (is_int ($id_value)) { $type = 'i'; } else if (is_float ($id_value)) { $type = 'd'; } else { die ('Cannot determine type for ' . $id_column . ' => ' . $id_value . ''); }
$bind_types .= $type;
$bind_values .= $id_value . ', ';
//$stmt->bind_param ($type, $id_value);
}
$bind_types .= '"';
$bind_values = substr ($bind_values, 0, -2);
echo $bind_types . ', ' . $bind_values;
$stmt->bind_param ($bind_types, $bind_values);
$stmt->execute();
}
的該格式弄亂。我很抱歉,如果它很難閱讀。
我收到以下錯誤:
「警告:mysqli_stmt :: bind_param()[mysqli的-stmt.bind-PARAM]:在類型定義字符串的元素數量不匹配綁定變量的數...「
任何想法?
這麼多'mysql_'和'mysqli'在過去一小時......用[PDO](http://us2.php.net/manual/en /book.pdo.php)。 – 2012-07-18 02:32:08
我正在研究它。然而,使用mysqli和PDO的爭論在雙方都是很好的。我認爲mysqli是滾動的方式。也許不會。 – 2012-07-18 02:33:17
我並沒有覺得有很多爭論,但我現在會去看看所說的論點。 – 2012-07-18 02:35:24