2015-11-16 16 views
1

我正在編寫一個程序來監視我爲安全起見而擁有的一羣計算機。我試圖在數據庫中存儲用戶的數據使用下面的代碼:PDO MySQL prepare->執行INSERT INTO不會出現在數據庫中

$con->prepare("INSERT INTO `myComputers` (`hwid`, `ip`, `pcname`, `username`, `os`, `country`, `first`) VALUES (:hwid, :ip, :pcname, :username, :os, :country, :first")->execute(
     array(
     ':hwid'  => $data_array['hwid'], 
     ':ip'   => $data_array['ip'], 
     ':pcname'  => $data_array['pcname'], 
     ':username' => $data_array['username'], 
     ':os'   => $data_array['os'], 
     ':country'  => $data_array['country'], 
     ':first'  => $data_array['first'] 
    ) 
    ); 

我沒有得到任何錯誤,但是當我看到在我的數據庫沒有插入任何數據。我已經檢查過$data_array中的每個項目實際上都設置了某種東西。另外這裏是我的MySQL數據庫建設查詢:

CREATE TABLE IF NOT EXISTS myComputers(
    hwid VARCHAR(64) NOT NULL PRIMARY KEY, 
    ip VARCHAR(45) NOT NULL, 
    pcname VARCHAR(50) NOT NULL, 
    username VARCHAR(50) NOT NULL, 
    os VARCHAR(150) NOT NULL, 
    country CHAR(2) NOT NULL, 
    first int(11) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

我一直堅持這個小時,不知道是什麼導致問題。任何幫助將不勝感激。

下面是一些測試數據我解析(我改變了我的IP地址):

blahblah 
123.12.123.123 
PotatoPC 
MyPotato 
Windows 
AU 
1447671823 
+0

我認爲數組中缺少':'from'first'是一個錯字? – CD001

+0

謝謝你指出。雖然這不能解決問題。 –

+3

你在你的SQL查詢中缺少一個''''''。我期望準備失敗,並且你會收到關於在非對象上調用'execute'的警告。查看您的錯誤日誌並在您的PDO連接上啓用異常模式。 –

回答

1

:first")收盤報價和支架問題是:first)")

所以整個語句將

$con->prepare("INSERT INTO `myComputers` (`hwid`, `ip`, `pcname`, `username`, `os`, `country`, `first`) VALUES (:hwid, :ip, :pcname, :username, :os, :country, :first)")->execute(
array(
     ':hwid'  => $data_array['hwid'], 
     ':ip'   => $data_array['ip'], 
     ':pcname'  => $data_array['pcname'], 
     ':username' => $data_array['username'], 
     ':os'   => $data_array['os'], 
     ':country'  => $data_array['country'], 
     ':first'  => $data_array['first'] 
    ) 
    );