使用准备语句时出现非对象错误

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=?");