更新/插入到mysql查询中

时间:2012-02-02 20:23:35

标签: php mysql

我正在尝试对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';
}

5 个答案:

答案 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

决定是否应更新或插入新的。