1

.我不知道是语法还是什么。我尝试了多种方法,这是我认为最简单的方法。

我使用以下方法将信息发送到 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);
?>

我从 phpMyAdmin 手动将 2 条记录添加到表中,我可以很好地显示或更新它们,但添加新记录不起作用。我只想在每次从另一个程序调用链接时开始一条新记录,并存储mac地址、日期、adNum和playClick。

EDIT2:: 回声 $query; 为了

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

输出:
INSERT INTO playerData(mac,date,AdClick,PlayNum) VALUES ('001EC946C2F4', '26/07/2012','1','1')

这就是我想要的,只是不将其添加到数据库中。

4

4 回答 4

2

很容易看出这里出了什么问题,尤其是语法高亮。

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

此行缺少单引号;它应该是:

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

这是一个语法错误,会破坏其他一切。

更不用说您的数据库选择缺少您的数据库处理程序,即:

mysql_select_db('databasename',$db); 

正如@swapnesh 所指出的, 并且如此处所述。

编辑

我无法重现您没有错误,但是我得到的是错误。首先,您在第 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()); 
于 2012-07-27T04:39:42.520 回答
2

正确的语法是——

mysql_select_db("databaseName", $db);

如果你使用这样的东西来解决连接错误,那就更好了——

$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 ..现在运行相同的查询来找出错误..你也可以找出使用 $result =mysql_query($query) or die(mysql_error());

于 2012-07-27T04:39:50.587 回答
0

而不是使用插入语句的方式添加将显式接收条目的字段。数据库表可能有更多字段,并且插入语句没有明确说明哪些字段将接收数据。

$query = mysql_query("INSERT INTO playerData (Name,Date,AdClick,PlayN) VALUES ('$name', '$date','$adClick','$playN')");
于 2012-07-27T04:47:36.277 回答
0

您在此行有语法错误

错误的 :

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

正确的 :

$adClick = mysql_real_escape_string($_GET['adNum']);
于 2012-07-27T05:01:05.513 回答