我有一个脚本需要检查是否存在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";
};
我尝试检查行是否在Zero之上,但它返回相同的错误。
答案 0 :(得分:1)
在SQL语句中删除$ friend上的撇号/反引号。
答案 1 :(得分:1)
无论代码出现什么问题(使用
)'$friend'
不是
`$friend`
同样适用于您的1
和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;