我的代码来生成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