我正在尝试对MySQL的查询执行更新/插入。应该插入,如果还没有在数据库中。
但是,它不会更新。我的数据库连接很好。我无法理解。
$sql = "UPDATE jos_bl_paid SET u_id='$uid', m_id = '$mid', t_id = '$cus', pd = '1', paypal_payment='$txn',p_date=NOW() WHERE u_id = '$uid' AND '$mid' = m_id ";
$test45 = mysql_affected_rows();
if ($test45 == 0) {
$sql = "INSERT INTO jos_bl_paid(paypal_payment,u_id,m_id,pd,t_id,p_date)VALUES('$txn','$uid','$mid','1','$cus',NOW())";
if (!mysql_query($sql)) {
error_log(mysql_error());
exit(0);
}
echo 'Yes';
}else{
echo 'No';
}
答案 0 :(得分:2)
从您显示的代码中,您甚至没有运行更新查询。你需要把
if (!mysql_query($sql)) {
error_log(mysql_error());
exit(0);
}
行前
$test45 = mysql_affected_rows();
甚至可以返回你想要的东西
答案 1 :(得分:0)
我会使用ON DUPLICATE KEY UPDATE mysql命令将它们变成一个语句。我猜你的问题是插入可能失败,因为你的架构中设置了一些唯一的密钥,即使实际的uid尚不存在,因此更新也会失败。你能准确发布你得到的错误信息吗?
答案 2 :(得分:0)
检查更新查询中的最后一个值我在那里发现了一个错误并且已经从我这边修复了它 试试这个
$sql = mysql_query("UPDATE jos_bl_paid SET u_id='$uid',m_id = '$mid', t_id = '$cus', pd = '1', paypal_payment='$txn',p_date=NOW() WHERE u_id = '$uid' AND m_id = '$mid'") or die(mysql_error());
答案已更新,请尝试更新的
答案 3 :(得分:0)
从您发布的代码中,您似乎将$sql
字符串设置为更新语句,但在检查受影响的行数之前不执行它。
在检查mysql_query($sql)
mysql_affected_rows();
否则,您不会告诉数据库更新任何内容。
答案 4 :(得分:0)
如果更新中的新值与旧值相同,则mysql不会更新该行,您将mysql_affected_rows
为0.如果您在字段u_id
上有主键,{{1您可以使用m_id
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
如果您没有,可以使用计数查询:
INSERT ON DUPLICATE UPDATE
决定是否应更新或插入新的。