2015-08-24 64 views
-1

我有一個包含列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> 
+0

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 –

+1

聽起來像你正在嘗試做一個SQL UPDATE不是一個插入 – Steve

+0

*「當提交被點擊時,我想**輸入框中的姓名**插入人列」* - 有趣的是,這不是你在接受的答案中說了什麼*「當然是更新而不是插入 - 我覺得很傻」* - 史蒂夫一直都是對的,無論是在他的評論中,還是在他的回答如下。 ***更新***在哪裏起作用? –

回答

1

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

完美!謝謝!當然是更新而不是插入 - 我感到非常愚蠢 –

2

你似乎試圖更新,在這種情況下,語法是:

$stmt = $conn->prepare("UPDATE names SET person=? where person_initial=?"); 
+0

很確定他們想要在那裏插入一個史蒂夫。 *「當點擊提交時,我想將輸入框中的名稱插入到人員列中* –

+0

@ Fred-ii-也許很難說。」在這種情況下,只有1行包含「I」 person_initial列存在於表中「'讓我相信相反,但只有OP知道 – Steve

+0

好吧,OP現在在接受的答案中說明:*」當然是更新而不是插入 - 我覺得很傻「* - 所以我upvoted。你一直都是對的。 –

相關問題