2013-10-01 35 views
1

考慮這個數據庫:MySQLi插入查詢成功,但表中沒有行?

var1 int(10) Auto Increment 
var2 varchar(255)  
var3 int(10) 
var4 tinyint(1) unsigned 
var5 int(10) 
var6 tinyint(1) unsigned [0] 
var7 tinyint(1) unsigned [0] 

我有一個域中的頁面,其中包含一些jQuery的,這使得一個JSONP得到一個.PHP腳本在另一個域:

客戶端的jQuery:

$.ajax({ 
    url:  "https://1.2.3.4/xxx/xxx.php", 
    timeout: 5000, 
    data: {  "var1":  "xxx", 
       "var2":  "xxx", 
       "var3":  "xxx", 
       "var4":  "xxx", 
       "var5":  "xxx", 
       }, 
    dataType: "jsonp", 
    success: function(data) { 
    alert(data); 
    }, 
}); 

服務器PHP:

<?php 
header('content-type: application/json; charset=utf-8'); 
header("access-control-allow-origin: *"); 

if($_SERVER['HTTP_REFERER'] != "xxx" || !isset($_GET['callback'])) 
{ 
    sendResponse(400, 'Invalid request'); 
    exit(); 
} 

// Check for required parameters 
if ( isset($_GET["var1"]) && 
     isset($_GET["var2"]) && 
     isset($_GET["var3"]) && 
     isset($_GET["var4"]) && 
     isset($_GET["var5"])) 
{ 
    if($_GET["var1"] == "xxx") 
    { 
     $var2 = $_GET["var2"]; 
     $var3 = intval($_GET["var3"]); 
     $var4 = intval($_GET["var4"]); 
     $var5 = intval($_GET["var5"]); 

     $db = new mysqli('localhost', 'root', 'xxx', 'xxx'); 
     $db->autocommit(FALSE); 

     $result = $db->query("INSERT INTO xxx (`xxx`, `xxx`, `xxx`, `xxx`) VALUES ('$var2', $var3, $var4, $var5)"); 
     $requestID = $db->insert_id; 

     $data = array("requestID" => $requestID, "errorMessage" => $db->error); 

     echo $_GET['callback'] . '('.json_encode($data).')'; 
    } 
} 
?> 

這廁所ks像插入工程。我在JSON中獲得有效的'insert_id'。我也試着返回受影響的行數,它顯示'1'。但是出於某種原因,當我查看該表後,表中沒有行嗎?

我可以使用相同的INSERT語句手動插入到該表中,同時以相同的用戶身份登錄('root' - 只是嘗試縮小它!)。我沒有得到任何PHP錯誤,並且$db->error什麼都不返回。如果我在之後查看MySQL中的表格,自動增量ID字段已經增加了一個 - 但沒有數據存在。

有什麼想法?

+0

'mysqli_select_db()',以確保您寫正確的模式?例如你還沒有在'test'數據庫中設置相同的表 - 假設'test'是默認的......可能是一個長期的。 – CD001

回答

3

刪除以下行:

$db->autocommit(FALSE); 

這意味着數據不會得到承諾盤自動。

+0

哦 - 是的..或添加一個' - > commit()'調用,錯過:) – CD001

+0

啊,發現!謝謝。 – Mike

+0

謹慎對待其他任何人來到這裏...'$ db-> insert_id'會爲您提供下一條記錄,並向前移動AUTO INCREMENT指針,即使該記錄未被添加/提交。這似乎是MySQL的一個錯誤(恕我直言)。 – Sablefoste

1

順便說一句...

你阿賈克斯/ jQuery的有語法錯誤(逗號), ...

$.ajax({ 
    url:  "https://1.2.3.4/xxx/xxx.php", 
    timeout: 5000, 
    data: {  "var1":  "xxx", 
     "var2":  "xxx", 
     "var3":  "xxx", 
     "var4":  "xxx", 
     "var5":  "xxx" //<-- HERE 
    }, 
    dataType: "jsonp", 
    success: function(data) { 
     alert(data); 
    } //<----------------------- HERE 
}); 
相關問題