mysql update语句运行无错误但是没有更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql update语句运行无错误但是没有更新相关的知识,希望对你有一定的参考价值。

<?php
$link = mysql_connect("localhost", "root", "20050608");
mysql_select_db("leenkon", $link);
$result = mysql_query("SELECT * FROM jzjy where qqnum='109914256' order BY 'times' DESC", $link);
$num_rows = mysql_num_rows($result);
$row = mysql_fetch_array($result);
echo "共计".$num_rows."行结果<br />\n";
for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--)
if (!mysql_data_seek($result, $i))
echo "Cannot seek to row $i: " . mysql_error() . "\n";
continue;

if (!($row = mysql_fetch_assoc($result)))
continue;

$j=intval($i);
$a=mysql_query("UPDATE jzjy SET ids='$j' where qqnum='109914256'");//这一句目的是将表中的一个字段ids修改为$i的值,程序没有报错。。。但是没有更新成功
echo $row['id'] . ' ' . $row['ids'] . "<br />\n";
echo $a;


mysql_close($link);

?>

ids或者qqnum在你数据库是什么类型的字段名?
要是字符型(varchar,char等),单引号是对的

要是整形(int等)型就不对了,整形是不用引号的。

执行没有错不代表SQL语句没错

你可以这样写:
<?php
//上面程序略...
$a=mysql_query("UPDATE jzjy SET ids='$j' where qqnum='109914256'");
//执行
if($a)//执行成功
echo '修改成功'.'<br>';
else//否则
echo '对不起,修改失败,出错信息是:'.mysql_error().'<br>';
//提示mysql_query的报错信息,你自己根据信息找错误,不然可以问我
//..下面程序略...
?>
参考技术A ids 原来的值是什么?0?如果是0,这次$j=intval($i);的$j也是0的话,就会没有更新到,你可以输出SQL看看是否正确
echo "UPDATE jzjy SET ids='$j' where qqnum='109914256'";
exit();追问

UPDATE jzjy SET ids='3' where qqnum='109914256'
UPDATE jzjy SET ids='2' where qqnum='109914256'
UPDATE jzjy SET ids='1' where qqnum='109914256'

输出来的结果是这样的,说明是没有错的呢

参考技术B 没有"事务提交"吧!!

MySQL 错误代码:在带有 WHERE 子句的 UPDATE 期间出现 1175

【中文标题】MySQL 错误代码:在带有 WHERE 子句的 UPDATE 期间出现 1175【英文标题】:MySQL Error Code: 1175 during UPDATE with a WHERE clause 【发布时间】:2022-01-04 16:57:18 【问题描述】:

我正在尝试将 Paymenttotal 更新为来自 Packagesprice 的总数,其中事务编号相同。但是 MySQL 一直给我错误:

错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表。要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。

命令如下:

UPDATE Payment py
SET total = (SELECT SUM(price) FROM Package pk
             WHERE py.transactionNo = pk.transactionNo);

我认为我正在使用一个使用 KEY 列的 WHERE(transactionNoPayment 的主键)。我是不是写错了?

【问题讨论】:

这能回答你的问题吗? MySQL error code: 1175 during UPDATE in MySQL Workbench 错误消息告诉您,您没有使用键列更新来自py 的单行。 WHERE 子句不是UPDATE 查询本身的一部分,而是子查询的一部分 是否有任何逻辑为什么要保存作为计算字段的“总计”?我们不保存这些数据。 @LeandroBardelli 理想情况下,我认为这不是必需的,但它适用于我需要“有趣的更新语句”的学校项目。因此,如果由于未保存计算字段而导致此查询没有意义,我将不得不尝试其他方法 @LeandroBardelli 没问题!您所说的在现实生活中的应用程序中绝对有意义 【参考方案1】:

您没有更新的 where 条件 .. 在这种情况下,您可以使用子查询使用正确的更新连接

UPDATE Payment py
INNER JOIN (
    SELECT pk.transactionNo, SUM(price) sum_price
    FROM Package pk
    GROUP BY pk.transactionNo
    WHERE py.transactionNo = pk.transactionNo
) t on  py.transactionNo = t.transactionNo

SET py.total =t.sum_price

【讨论】:

这给了我一个错误:“INNER”在这个位置无效,期待 SET 答案已更新 .. 缺少正确的集合子句 ..

以上是关于mysql update语句运行无错误但是没有更新的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:存储过程语法错误

mysql 无数据插入,有数据更新

mysql 无数据插入,有数据更新

[MySQL] update语句的redo log过程

Java上的MySQL“INSERT ... ON DUPLICATE KEY UPDATE”:如何区分插入/更新/无变化状态

关于plsql!!!