使用准备语句时出现非对象错误
Non object error when using prepared statement
我有一个 table 包含列 person 和 person_initials。单击“提交”后,我想将输入框中的姓名插入姓名 table 中的人员列中,其中首字母等于初始定义的首字母。在这种情况下,table 中只有 1 行包含 person_initial 列中的 "I"。
请看下面的代码。我确定准备好的语句中一定存在基本语法错误,但我看不到它。为无知道歉。
index.php:
<html>
<body>
<form method="post">
Insert: <input type="text" name="q" value="Tim"/>
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['q'])) {
$test_name = $_POST['q'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "personnames";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$people = 'I';
$stmt = $conn->prepare("INSERT INTO names (person) VALUE=(?) where
person_initial=(?)");
$stmt->bind_param("ss",$test_name,$people);
$stmt->execute();
$stmt->close();
$conn->close();
}
?>
</body>
</html>
您似乎在尝试更新,在这种情况下,语法为:
$stmt = $conn->prepare("UPDATE names SET person=? where person_initial=?");
您的INSERT
查询有误。使用
$stmt = $conn->prepare("INSERT INTO names (person) VALUES(?)");
改为
$stmt = $conn->prepare("INSERT INTO names (person) VALUE=(?) where
person_initial=(?)");
如果你想更新,那么使用这样的更新查询
$stmt = $conn->prepare("UPDATE names SET person=? where person_initial=?");
我有一个 table 包含列 person 和 person_initials。单击“提交”后,我想将输入框中的姓名插入姓名 table 中的人员列中,其中首字母等于初始定义的首字母。在这种情况下,table 中只有 1 行包含 person_initial 列中的 "I"。 请看下面的代码。我确定准备好的语句中一定存在基本语法错误,但我看不到它。为无知道歉。
index.php:
<html>
<body>
<form method="post">
Insert: <input type="text" name="q" value="Tim"/>
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['q'])) {
$test_name = $_POST['q'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "personnames";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$people = 'I';
$stmt = $conn->prepare("INSERT INTO names (person) VALUE=(?) where
person_initial=(?)");
$stmt->bind_param("ss",$test_name,$people);
$stmt->execute();
$stmt->close();
$conn->close();
}
?>
</body>
</html>
您似乎在尝试更新,在这种情况下,语法为:
$stmt = $conn->prepare("UPDATE names SET person=? where person_initial=?");
您的INSERT
查询有误。使用
$stmt = $conn->prepare("INSERT INTO names (person) VALUES(?)");
改为
$stmt = $conn->prepare("INSERT INTO names (person) VALUE=(?) where
person_initial=(?)");
如果你想更新,那么使用这样的更新查询
$stmt = $conn->prepare("UPDATE names SET person=? where person_initial=?");