2013-12-08 40 views
0

這對我不起作用,我一直在使用插入和其他所有的sql語句,但由於某些原因,這是行不通的。簡單的插入工作不正常嗎?

下表的結構如下。

**passenger_journey** 
j_id user_id 
142 1 
142 14 

下面所有我想要做的是插入登錄的用戶ID也就是$ USER_ID和旅程ID是$ ID。你正在工作的是變量設置。

我認爲一個可能的問題可能是$ id,因爲我使用GET方法從url獲取這個問題。

<?php 

    $insert_passenger = "INSERT INTO `passenger_journey` VALUES ('" . mysql_real_escape_string($id) ."','" . mysql_real_escape_string($user_id) . "')"; 



     if (isset($_POST['submit'])){ 

     mysql_query($insert_passenger); 

     } 
    ?> 


<form method="POST"> 
<br/>Add yourself to this journey!<br/> 
<input type ="submit" value="Sign up for this Journey"/> 
</form> 

這一直讓我生氣幾個小時,任何幫助都會很棒。

+0

哪裏做價值從何而來?你確定數據庫連接是否正確建立? – kero

+2

'echo $ insert_passenger;'是你期望的嗎?它可以在phpmyadmin或mysql的consol中使用嗎? – 2013-12-08 21:43:48

+0

哪些是列的數據類型?如果他們是數字,你必須刪除' – kiks73

回答

1

這不匹配:

<form method="POST"> 
    <br/>Add yourself to this journey!<br/> 
    <input type ="submit" value="Sign up for this Journey"/> 
</form> 

和:

if (isset($_POST['submit'])){ 
    mysql_query($insert_passenger); 
} 

你需要一個名稱分配給您的提交按鈕,如果聲明是真實的:

<input type="submit" name="submit" value="Sign up for this Journey"/> 

...並且您需要將這些變量傳遞到表單的動作中,以便能夠在$ _GET超全局中使用它們。

<?php 
$your_id = // define your id here, I assume in your insert query this should just be null. 
$user_id = // define your user id here however you're getting it... sessions...? 
?> 
<form method="POST" action="?id=<?=$your_id?>&user_id=<?=$user_id?>"> 

注:如果你iduser_id變量從會議的到來,餅乾等,或任何可以在腳本中檢索做插入,絕對做到有,而不是使其通過HTML的當你不需要的時候形成。

通常在使用MySQL插入數據時,相關的id列將被設置爲auto_increment,並且您不會爲其傳遞值或者您將傳遞爲null,因此您讓它爲其分配自己的值。你應該做的是在這裏(雖然我不知道你的情況的話):

$insert_passenger = "INSERT INTO `passenger_journey` VALUES (null,'" . mysql_real_escape_string($_GET['user_id']) . "')"; 

旁註:不僅是事實,mysql*已被棄用會導致你麻煩,但是這個腳本容易受到SQL注入和XSS的影響。

文檔/詳細信息:

+0

感謝您的建議,該行不需要自動增量,因爲我沒有將它用於獨特的目的。 –

+0

酷,你需要通過你的表單標記傳遞它。 –

+0

這只是提交按鈕的名稱,你是對的!謝謝您的幫助。 –