很奇怪的问题,无法更新数据库

jim8590251 2008-12-04 04:42:48
我用PHP+MYSQL做的网站,然后从MSSQL数据库导过来了7000+条记录,都是些文章数据,导过来后,发现文章里面有很带图片的,地址一般都是/images/.....,我现在想把这些图片的地址都改成/images-old/,于是我就用
sql语句查询表中 like '%/images/%'的记录,查找到的记录条数有1000条
然后我就想用str_replace,替换/images/为/images-old/,再执行SQL语句,循环执行1000次
执行是执行了
可是打开数据一看,还是那样,没改掉
更奇怪的是,如果我在后台,编辑一下哪条数据,再执行本来那个循环的时候,对应的那条数据往往就替换掉了,不知道为什么

不知道哪位高手遇到过这样的情况??
...全文
88 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
motol 2008-12-05
  • 打赏
  • 举报
回复
把$oldcontent/$newcontent/$sqla分别输出下,对比后就能知道问题所在了。
iasky 2008-12-04
  • 打赏
  • 举报
回复
没有转义,SQL有错误的
银熊 2008-12-04
  • 打赏
  • 举报
回复
echo 出来的语句能在数据库里面执行吗, 看看能不能成功执行
dinghdong 2008-12-04
  • 打赏
  • 举报
回复
不好意思。理解错了。
dinghdong 2008-12-04
  • 打赏
  • 举报
回复
lz 你的网站有没有使用缓存技术?比如使用静态页面。
Zijian_Zhang 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 phpBoy005 的回复:]
PHP code$sqla="update union_list set list_content='".$newcontent."',lit_title='".$rs[0]["list_title"]."' where id=".$rs[$i]["id"];//你用单引号把变量框在里面,变量意义就变了!
//改成:$sqla="update union_list set list_content=$newcontent,lit_title=$rs[0]["list_title"] where id=$rs[$i]["id"]”;
//或者:$sqla="update union_list set list_content=".$newcontent.",lit_title=".$rs[0]["list_title"]."wher…
[/Quote]
你错了,phpBoy005,双引号里面的单引号是不会转义的,楼主的SQL语句没问题(指转义的方法)。
phpboy 2008-12-04
  • 打赏
  • 举报
回复


$sqla = "update union_list set list_content='".$newcontent."',lit_title='".$rs[0]["list_title"]."' where id=".$rs[$i]["id"];
//你用单引号把变量框在里面,变量意义就变了!
//改成:

$sqla = "update union_list set list_content=$newcontent,lit_title=$rs[0]["list_title"] where id=$rs[$i]["id"]”;
//或者:

$sqla = "update union_list set list_content=".$newcontent.",lit_title=".$rs[0]["list_title"]." where id=".$rs[$i]["id"];

ichigoxi 2008-12-04
  • 打赏
  • 举报
回复
转义双引号?
jim8590251 2008-12-04
  • 打赏
  • 举报
回复
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '江东区教育局办公室关于公布2003学年“五爱”教育读书活动获奖名单?
程序猿之殇 2008-12-04
  • 打赏
  • 举报
回复
echo $sqla . "<br/>";
echo mysql_error() . "<br/>";
加上这些,看看实际情况.
jim8590251 2008-12-04
  • 打赏
  • 举报
回复

include_once("inc/init.php");

$sql = "select id,typeid,list_title,list_content,list_from from union_list where list_content like '%/images/%' order by id desc";
$rt = $DB->Query($sql);
$num = $DB->getRowsNum($rt);
$rs = $DB->getRows($rt);

echo $num;die();

for($i=0;$i<$num;$i++)
{
echo $rs[$i][0]."<br/>";
$oldcontent = $rs[$i]["list_content"];
$newcontent = str_replace("/images/","/images-old/",$oldcontent);
//$newcontent = str_replace('"','"',$newcontent);
//$newcontent = str_replace("'","",$newcontent);
$sqla = "update union_list set list_content='".$newcontent."',lit_title='".$rs[0]["list_title"]."' where id=".$rs[$i]["id"];
//echo $sqla;die();
//$DB->Query($sqla);

$connse=mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$connse);
mysql_query($sqla);
echo $i."|".$rs[$i]["id"]."<br/>";
mysql_close();


}


这是我的代码,执行没反应,大家帮我看看错哪里了?
jiang_jiajia10 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 froole 的回复:]
不晓得lz怎么执行的数据库操作,如果普通的mysql的话这样应该可以。
用mysql_query()执行commit命令

mysql_query("COMMIT", $connection);
[/Quote]
up
海诗美妆 2008-12-04
  • 打赏
  • 举报
回复
不晓得lz怎么执行的数据库操作,如果普通的mysql的话这样应该可以。
用mysql_query()执行commit命令

mysql_query("COMMIT", $connection);
jim8590251 2008-12-04
  • 打赏
  • 举报
回复
不懂,麻烦说清楚点,可以么
海诗美妆 2008-12-04
  • 打赏
  • 举报
回复
lz忘记commit了

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧