2015-06-10 44 views
0

我有一個插入查詢下面,並檢查插入是否成功使用:mysqli_stmt_execute。查詢未執行,因爲這些值沒有輸入到我的數據庫中。但是,我正在進入if條件。我不明白這。我之前已經將stmt_prepare包裝在if的條件下,並且這也正在返回true它正在準備成功。我對bind語句也做了同樣的事情,現在我在最後的execute語句中使用它。全部返回true,但查詢未執行。表的結構是正確的。我甚至在phpmyadmin中執行插入操作,並將生成的查詢粘貼到我的AddToken變量中。準備語句不執行,但msqli_stmt_execute返回true

$con = 'my login credentials' 
    $stmt = mysqli_stmt_init($con); 
    $AddToken = "INSERT INTO `auth` VALUES ('',?, ?)"; 

    mysqli_stmt_prepare($stmt, $AddToken); 

    mysqli_stmt_bind_param($stmt, "si", $Token, $ID); 

    if (mysqli_stmt_execute($stmt)){ 
     $message2 = "here"; 
     // worked 
    } 
    else{ 
     //didn't work 
     $message2 = "here 2"; 
    } 
    echo $message2; 

編輯我不知道這個問題是,但我刪除了我的身份驗證表,並重新創建它和它的工作?

+0

是您的'「」'保留對於主鍵?如果是這樣,請使用DEFAULT,而不是 – Mihai

+0

@Mihai嘗試使用DEFAULT,使用和不使用引號,導致語句準備失敗 – user2363025

回答

1

你不必有empty中的字串VALUES()在插入查詢,因爲你將只有兩個值 可能是更好的指定列名,如果你知道

$AddToken = "INSERT INTO `auth` (column1, column2) VALUES (?, ?)"; 
+1

只有當您有2列時才起作用。如果您有3個或更多,則此查詢將失敗,因爲數據庫不知道您要在哪裏插入這兩個值。 – Sean

+0

@Identity Unkn0wn我曾經嘗試過。它沒有工作 – user2363025

+0

atlease提供列名應該工作..你收到什麼錯誤? – Abhinav