尝试让 PDO 执行工作时出错
Error when trying to get PDO execute to work
这有效,我将 print_r 上回显的代码粘贴到执行语句中,一切正常。
$search_items = array();
for ($x = 0; $x < $search_parts_count; $x++) {
$search_items[] = "':search$x' => '%$search_parts[$x]%'";
}
print_r(implode(",", $search_items));
$stmt->execute(array(':search0' => '%cure%',':search1' => '%cancer%',':search2' => '%help%',':search3' => '%ongoing%'));
但是当我这样做时:
$stmt->execute($search_items);
我得到:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens'
不知道我做错了什么。任何帮助将不胜感激!
声明如下:
$sql_string = 'SELECT area, file_name, title FROM meta_details WHERE' . $search_guts;
$stmt = $conn->prepare($sql_string);
它是这样建造的:
$search_guts = '(';
for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'title LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};
$search_guts .= ') OR (';
for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'description LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};
$search_guts .= ')';
谢谢!
构建时$search_items
...
$search_items[] = "':search$x' => '%$search_parts[$x]%'";
您正在创建一个值为 "':search$x' => '%$search_parts[$x]%'"
的项目,而不是 :search$x
的条目。您应该设置为...
$search_items[":search$x"] = "%{$search_parts[$x]}%";
这有效,我将 print_r 上回显的代码粘贴到执行语句中,一切正常。
$search_items = array();
for ($x = 0; $x < $search_parts_count; $x++) {
$search_items[] = "':search$x' => '%$search_parts[$x]%'";
}
print_r(implode(",", $search_items));
$stmt->execute(array(':search0' => '%cure%',':search1' => '%cancer%',':search2' => '%help%',':search3' => '%ongoing%'));
但是当我这样做时:
$stmt->execute($search_items);
我得到:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens'
不知道我做错了什么。任何帮助将不胜感激!
声明如下:
$sql_string = 'SELECT area, file_name, title FROM meta_details WHERE' . $search_guts;
$stmt = $conn->prepare($sql_string);
它是这样建造的:
$search_guts = '(';
for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'title LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};
$search_guts .= ') OR (';
for ($x = 0; $x < $search_parts_count; $x++) {
$search_guts .= 'description LIKE :search' . $x;
if ($search_parts_count - 1 != $x){$search_guts .= ' OR ';}
};
$search_guts .= ')';
谢谢!
构建时$search_items
...
$search_items[] = "':search$x' => '%$search_parts[$x]%'";
您正在创建一个值为 "':search$x' => '%$search_parts[$x]%'"
的项目,而不是 :search$x
的条目。您应该设置为...
$search_items[":search$x"] = "%{$search_parts[$x]}%";