警告:PDOStatement::execute():SQLSTATE[HY093]:参数号无效:未定义参数?
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined?
我正在尝试将数据从输入页面 "addbook.php" 发送到插入页面 "postbook.php",然后再将其发送到我的数据库。
我是 PHP 的新手,但现在正在学习它。所以现在已经尝试了数百次来让它工作,但我总是遇到问题...
PHP/ PDO - postbook.php
<?php
# pdo options/attributes
$opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION );
# data source name
$dsn = "mysql:host=localhost;dbname=book";
# basic pdo connection (with added option for error handling)
if ($_SERVER['REQUEST_METHOD'] == "POST") {
try {
$dbh = new PDO('mysql:host=localhost;dbname=book', 'root', '');
$stmt = $dbh->prepare("INSERT INTO English books VALUES :English title");
$arrayName = array(':English title' => $_POST['Etitle']);
$result = $stmt->execute($arrayName);
if($result) {
echo "<p>Data submitted successfully!</p>";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
echo "<p>Successfully connected!</p>";
}
# close the connection
$DBH = null;
?>
HTML/输入 - addbook.php
<form action="postbook.php" method="post" />
<p>English title: <input type="text" name="Etitle" /></p>
<input type="submit" value="submit"/>
:English title
不是有效的占位符名称。 PDO/SQL 无法区分您是否指的是一个占位符 :English
后跟关键字 title
(这将是通常的 SQL 语法,也是它的解释方式,并且是无效语法) ,或者您是否指的是中间带有 space 的占位符。
您必须将占位符命名为 :englishTitle
或类似的名称, 而不是 space。您的 table 姓名也是如此。
您还缺少括号:
INSERT INTO english_books VALUES (:englishTitle)
我正在尝试将数据从输入页面 "addbook.php" 发送到插入页面 "postbook.php",然后再将其发送到我的数据库。
我是 PHP 的新手,但现在正在学习它。所以现在已经尝试了数百次来让它工作,但我总是遇到问题...
PHP/ PDO - postbook.php
<?php
# pdo options/attributes
$opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION );
# data source name
$dsn = "mysql:host=localhost;dbname=book";
# basic pdo connection (with added option for error handling)
if ($_SERVER['REQUEST_METHOD'] == "POST") {
try {
$dbh = new PDO('mysql:host=localhost;dbname=book', 'root', '');
$stmt = $dbh->prepare("INSERT INTO English books VALUES :English title");
$arrayName = array(':English title' => $_POST['Etitle']);
$result = $stmt->execute($arrayName);
if($result) {
echo "<p>Data submitted successfully!</p>";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
echo "<p>Successfully connected!</p>";
}
# close the connection
$DBH = null;
?>
HTML/输入 - addbook.php
<form action="postbook.php" method="post" />
<p>English title: <input type="text" name="Etitle" /></p>
<input type="submit" value="submit"/>
:English title
不是有效的占位符名称。 PDO/SQL 无法区分您是否指的是一个占位符 :English
后跟关键字 title
(这将是通常的 SQL 语法,也是它的解释方式,并且是无效语法) ,或者您是否指的是中间带有 space 的占位符。
您必须将占位符命名为 :englishTitle
或类似的名称, 而不是 space。您的 table 姓名也是如此。
您还缺少括号:
INSERT INTO english_books VALUES (:englishTitle)