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);
?>
要是字符型(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'
输出来的结果是这样的,说明是没有错的呢
MySQL 错误代码:在带有 WHERE 子句的 UPDATE 期间出现 1175
【中文标题】MySQL 错误代码:在带有 WHERE 子句的 UPDATE 期间出现 1175【英文标题】:MySQL Error Code: 1175 during UPDATE with a WHERE clause 【发布时间】:2022-01-04 16:57:18 【问题描述】:我正在尝试将 Payment
的 total
更新为来自 Packages
的 price
的总数,其中事务编号相同。但是 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(transactionNo
是 Payment
的主键)。我是不是写错了?
【问题讨论】:
这能回答你的问题吗? 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语句运行无错误但是没有更新的主要内容,如果未能解决你的问题,请参考以下文章
Java上的MySQL“INSERT ... ON DUPLICATE KEY UPDATE”:如何区分插入/更新/无变化状态