我有一个包含列person和person_initials的表。点击提交时,我想将输入框中的名称插入名称表中的人员列中,其中首字母等于初始定义的名称。在这种情况下,表中只有一行包含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>
INSERT没有一个'where'条款。 INSERT ON DUPLICATE的作用与INSERT SELECT一样http://dev.mysql.com/doc/refman/5.6/en/insert.html。编辑:和史蒂夫所述的更新。 http://dev.mysql.com/doc/refman/5.6/en/insert-select.html --- http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate。 html –
听起来像你正在尝试做一个SQL UPDATE不是一个插入 – Steve
*“当提交被点击时,我想**输入框中的姓名**插入人列”* - 有趣的是,这不是你在接受的答案中说了什么*“当然是更新而不是插入 - 我觉得很傻”* - 史蒂夫一直都是对的,无论是在他的评论中,还是在他的回答如下。 ***更新***在哪里起作用? –