0

我有一个脚本需要检查 mysql 行是否存在。如果确实如此,它必须对其采取行动。如果它不存在,那么它必须做一些不同的事情。如果它确实存在,它可以正常工作,但是当它不存在时,它会向我的 ajax 返回一个错误:

Unknown column '100005075040249' in 'field list'

'100005075040249'是下面 $friend 的值

这是我的php代码:

$connection = mysql_connect("$host", "$username", "$password") or die(mysql_error()); 

$sql_result = mysql_query("SELECT `FB_ID` FROM `lavender`.`Players` WHERE FB_ID =  `$friend`");

if(is_resource($sql_result) && mysql_num_rows($sql_result) > 0 ){
    $rec = mysql_query("SELECT Recieved FROM `lavender`.`Players` WHERE FB_ID = `$friend`");
    $rec = $rec['Recieved'];
    if($rec == 0){
        mysql_query("UPDATE `lavender`.`Players` SET `count` = `count`+1, `total` = `total`+1, `Recieved` = 1 WHERE FB_ID= `$friend`");
    };

    echo "inserted into old row";
}else{
    mysql_query("INSERT INTO `lavender`.`Players` (`FB_ID`, `count`, `total`, `Recieved`) VALUES (`$friend`, `1`, `1`, `1`);") or die(mysql_error());

    echo "made new row";
};

我只是检查该行是否高于零,但它返回相同的错误。

4

2 回答 2

1

不管代码有什么问题(使用

'$friend'

不是

`$friend`

同样对于您1的 's 和fetch您的实际行...)您可以在 1 个查询中执行此操作,前提是您在 FB_ID 上有一个 UNIQUE 索引,这也可以避免竞争条件:

INSERT INTO `lavender`.`Players` 
  (`FB_ID`, `count`, `total`, `Recieved`) 
  VALUES 
  ('$friend', 1, 1, 1)
ON DUPLICATE KEY UPDATE
  `count` = IF(received, `count`,`count`+1),
  `total` = IF(received, `total`,`total`+1),
  received = 1;
于 2013-05-08T15:22:53.387 回答
1

在 SQL 语句中去掉 $friend 上的撇号/反引号。

于 2013-05-08T15:18:00.573 回答