2014-03-03 67 views
0

我有問題在第3個表中插入一些工作人員。Mysql插入準備好的語句不起作用

表首先包含first_id,test_name |表二包含second_id,test_second |表的第一第二個是包含first_id,second_id,注意(可以爲null)

$first_id = 1; 
$second_id = 3; 

$stmt = $this->conn->prepare("INSERT INTO first-second (first_id, second_id) values (?, ?)"); 
$stmt->bind_param("ii", $first_id, $second_id); 
$result_insert = $stmt->execute(); 
$stmt->close(); 

在phpMyAdmin我可以做的插入,但我不知道爲什麼有語句doesn'work。

謝謝。

+0

嘗試刪除'$ result_insert ='因爲你不是以後打電話變量。 –

回答

1

我會避免用短劃線定義表名,這不是一個好的做法。無論如何,你可以解決你的問題,只是在桌子名稱之間加上反引號。

事情是這樣的:

"INSERT INTO `table-mame` WHERE ... 
0

添加反引號周圍的表名:

$stmt = $this->conn->prepare("INSERT INTO `first-second` (first_id, second_id) values (?, ?)"); 

它雖然建議,不要在表名稱中使用「怪」字。

+0

我自己對連字符有一種感覺,我只是沒有100%的把握。我從不使用連字符;任何地方。 –

0

我假設您正在使用textbox/textarea或任何其他請求輸入以將數據插入數據庫的類型。您的輸入可能包含特殊字符,導致查詢失敗。在插入查詢之前嘗試使用mysqli_real_escape_string

$input1=mysqli_real_escape_string($_POST['input1']); 
$input2=mysqli_real_escape_string($_POST['input2']); 
$input3=mysqli_real_escape_string($_POST['input3']); 

mysqli_query($conn,"INSERT INTO first-second (first_id, second_id, note) VALUES ('$input1','$input2','$input3')"); 

順便說一句,沒事在表名稱中使用連字符,但不推薦:
Can a table field contain a hyphen?

0
$first_id = 1; 
$second_id = 3; 

$stmt = $this->conn->prepare("INSERT INTO first-second (first_id, second_id) values (:f1, :f2)"); 
$result_insert = $stmt->execute(array('f1'=>$first_id , 'f2'=>$second_id)); 
$stmt->close(); 

希望這有助於。

謝謝