2012-07-27 102 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']);