2012-07-27 127 views
1

。我不知道它是語法還是什麼。我嘗試了各種方法,這是我認爲最簡單的方法。php插入mysql不起作用

我用發送到userData.php信息:

http://mydomain.com/adverts/userStats.php?name=001EC946C2F4&adNum=1&playClick=1 

在userData.php我:

<?php 
    $db = mysql_connect('localhost', 'username', 'password') or die('Could not connect: ' . mysql_error()); 
    $db_selected = mysql_select_db('databaseName', $db) or die('Could not select database'); 
if (!$db_selected) 
    { 
    die ("Can\'t use test_db : " . mysql_error()); 
    } 

    $name = mysql_real_escape_string($_GET['name']); 
    $date = date("d/m/Y"); 
    $adClick = mysql_real_escape_string($_GET['adNum]); 
    $playN = mysql_real_escape_string($_GET['playClick']); 

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')"); 
$result = mysql_query($query) or die('Query failed: ' . mysql_error())); 

mysql_close($db); 
?> 

我手動添加2條記錄,從phpMyAdmin的表,我可以顯示或更新它們就好,但添加新記錄不起作用。每次從其他程序調用鏈接時,我只想開始新記錄,並存儲mac地址,日期,adNum和playClick。

EDIT2 :: echo $ query;對於

http://simplehotkey.com/adverts/userStats.php?name=001EC946C2F4&adNum=1&playClick=1 

輸出:
INSERT INTO playerData(MAC,日期,AdClick,PlayNum)VALUES( '001EC946C2F4','26/07/2012' , '1', '1')

這是我想要的只是沒有將它添加到數據庫。

+0

什麼錯誤你好嗎? – 2012-07-27 04:39:59

+0

可能會有@Daedalus豪宅的語法錯誤。 Ans Daedalus和Swapnesh你們都讓我告訴你一件事你是對的,我們必須通過DB處理程序,但它的罰款沒有數據庫處理程序它將工作,即使他沒有通過DB處理程序 – 2012-07-27 04:46:14

+0

@HirenSoni它更好,如果我們按照程序最小化錯誤,因爲我們不進入他的系統,如果他正在運行php代碼而沒有php系統,這可能是無限錯誤的可能性;) – swapnesh 2012-07-27 04:50:15

回答

2

正確的語法是 -

mysql_select_db("databaseName", $db); 

而且它的更好,如果u使用這樣的連接errors--

$db_selected= mysql_select_db("databaseName", $db); 
if (!$db_selected) 
    { 
    die ("Can\'t use test_db : " . mysql_error()); 
    } 

編輯

你正在寫都錯了:(

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')"); 
$result = mysql_query($query) <--------------WRONG 

嘗試這樣的事情----

$query = "INSERT INTO playerData(CORRECT_COL_NAMES) VALUES ('$name', '$date','$adClick','$playN')"; 
$results = mysql_query($query, $connection); 

新的編輯

域錯誤--- - 錯誤DATATYPE

','1','1'< ---這是作爲字符串傳遞,而你有這樣的一個int在你的數據庫結構..現在運行相同的查詢,因爲它是找出錯誤..也是你可以計算出使用$結果= mysql_query($query) or die(mysql_error());

+0

呃我繼續點擊輸入以創建一個新的在我鍵入我的評論之前的行 – user1108224 2012-07-27 04:51:48

+0

@ user1108224回顯查詢,然後告訴我,以及playerData的結構是什麼? – swapnesh 2012-07-27 04:58:02

+0

問題是我沒有在瀏覽器中查看它。我從遊戲中發送網址。如果我去了PHP文件的URL,在從遊戲發送URL之後什麼也沒有顯示,在遊戲中我可以調試它發送的URL。我在遊戲中調用http://simplehotkey.com/adverts/userStats.php?name=001EC946C2F4&adNum=1&playClick=1,其中http://simplehotkey.com/adverts/userStats.php是基本腳本 – user1108224 2012-07-27 05:06:39

2

這裏很容易看出這裏有什麼問題,尤其是語法突出顯示。

$adClick = mysql_real_escape_string($_GET['adNum]); 

此行缺少單引號;它應該是:

$adClick = mysql_real_escape_string($_GET['adNum']); 

這是一個語法錯誤,它毀了一切。

且不說你的數據庫選擇丟失你的數據庫的處理程序,即:

mysql_select_db('databasename',$db); 

正如指出的@swapnesh,and as noted here.

編輯

我已經無法重現你缺乏的錯誤,但是我得到的卻是錯誤。首先,你有一個額外)第12行:

$result = mysql_query($query) or die('Query failed: ' . mysql_error())); 

應該是:

$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 

最後,你居然不正確執行兩次查詢,所以第二次的查詢爲空。你有什麼:

$query = mysql_query("INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')"); 
$result = mysql_query($query) or die('Query failed: ' . mysql_error())); 

應改爲:

$query = "INSERT INTO playerData VALUES ('$name', '$date','$adClick','$playN')"; 
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
+0

ah,我從上面的答案中添加了連接參數並添加了缺失的'但它仍然不起作用。 – user1108224 2012-07-27 04:44:11

+0

@ user1108224不幸的是,這不是一個問題描述,請發佈錯誤以及。 – Daedalus 2012-07-27 04:45:39

+0

我會在哪裏得到一個錯誤?它不會拋出,所以它什麼都不做。我從遊戲發送鏈接。我從表格中檢索記錄並在遊戲中顯示。當我提交一個分數時,它不會顯示在數據庫或我的遊戲統計信息中display.php – user1108224 2012-07-27 04:47:22

0

而不是使用插入語句的方式你添加顯式接收條目的字段。數據庫表可能有更多的字段,插入語句不會明確指出哪些字段將接收數據。

$query = mysql_query("INSERT INTO playerData (Name,Date,AdClick,PlayN) VALUES ('$name', '$date','$adClick','$playN')"); 
+0

是的,這可能是錯誤.. – mrsrinivas 2012-07-27 04:56:21

+0

我已經這樣。我只是換了一下,它仍然沒有添加任何東西......謝謝 – user1108224 2012-07-27 04:59:29

0

你有語法錯誤此線路上

錯誤:

$adClick = mysql_real_escape_string($_GET['adNum]); 

正確:

$adClick = mysql_real_escape_string($_GET['adNum']);