存储过程出错:修改语句把所有该字段的值都改了

yzxlyd 2006-07-19 09:54:42
存储过程如下:
CREATE PROCEDURE `UpdateNews`(in newsid int, in title varchar(50))
BEGIN
UPDATE `news` SET `title`=title WHERE `newsid`=newsid;
END

PHP中调用
mysqli_query($link, "call rs_gyminstitute.UpdateNews(5, '555')");
我只想把id为5的改变,但是它却把所有的都改变了。。。
...全文
176 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzxlyd 2006-07-20
  • 打赏
  • 举报
回复
比如说我的存储过程如下
CREATE PROCEDURE `Show`(in id int)
BEGIN
select * from news where `newsid`=id;
END

在PHP中执行
mysqli_query("call aa(1)");
我想在PHP中知道它是否有newsid为1这条新闻
是不是在存储过程参数中加个out变量或是其它什么办法?
zeroleonhart 2006-07-20
  • 打赏
  • 举报
回复
问题今天已经解决了。
我想调用一个存储过程,让它返回一个值,我该怎么写呢?

use mysqli
yzxlyd 2006-07-20
  • 打赏
  • 举报
回复
问题今天已经解决了。
我想调用一个存储过程,让它返回一个值,我该怎么写呢?
jacky421 2006-07-20
  • 打赏
  • 举报
回复
再不行的话,你到php.net上去下个扩展包,那里面比较全
jacky421 2006-07-20
  • 打赏
  • 举报
回复
up一下
yzxlyd 2006-07-20
  • 打赏
  • 举报
回复
yttlovezxx(月亮岛):
select count(title) from news into cnt;不是这样用的
应该是select count(title) into cnt from news;

我想要的是满足newsid为1的这一条记录,最好再加上如果有记录的话就返回一个值,无记录返回另一个值
yzxlyd 2006-07-20
  • 打赏
  • 举报
回复
等下做完事我试下下,谢谢你啊。
yttlovezxx 2006-07-20
  • 打赏
  • 举报
回复
CREATE PROCEDURE `UpdateNews`(in a int, in b varchar(50))
BEGIN
declare cnt int;
declare return_code int;
UPDATE `news` SET `title`=b WHERE `newsid`=a;
select count(title) from news into cnt;
set return_code = cnt;
select return_code;
END

我也初学.不对不要见怪
zeroleonhart 2006-07-19
  • 打赏
  • 举报
回复
UPDATE `news` SET `title`=title WHERE `newsid`=newsid;

-----------------------------

you set the name of the innerVariables same as the column name.
change them as

CREATE PROCEDURE `UpdateNews`(in newsid int, in title varchar(50))
BEGIN
SET @a=newsid;
SET @b=title;
UPDATE `news` SET `title`= @b WHERE `newsid`= @a;
END

or

CREATE PROCEDURE `UpdateNews`(in a int, in b varchar(50))
BEGIN
UPDATE `news` SET `title`=b WHERE `newsid`=a;
END

21,886

社区成员

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

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