将PHP编写的语句与MySQL存储过程相结合
我正在一个业余漫画网站上工作,我正在尝试使用一个存储过程将漫画数据插入数据库。有很多信息要转储,所以参数列表很大,但它不返回任何值将PHP编写的语句与MySQL存储过程相结合,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我正在一个业余漫画网站上工作,我正在尝试使用一个存储过程将漫画数据插入数据库。有很多信息要转储,所以参数列表很大,但它不返回任何值 PROCEDURE `update_comic`(IN cid int, title varchar(50), url varchar(100), sched int, nsfw char(1), form int, m tinyint, t tinyint, w tinyint, r tinyint, f tinyint, s tinyint, n tinyi
PROCEDURE `update_comic`(IN cid int, title varchar(50), url varchar(100), sched int,
nsfw char(1), form int,
m tinyint, t tinyint, w tinyint, r tinyint, f tinyint, s tinyint, n tinyint)
我想使用一个准备好的语句调用这个存储过程。我的第一次尝试是这样的:
if(!$stmt = $db->prepare("CALL update_comic(?,?,?,?,?,?,?,?,?,?,?,?,?)"))
{echo "Prepare UPDATE didn't work";}
if(!$stmt->bind_param("issisiiiiiiii",$cid, $ti, $url, $schedule, $nsfw,
$form, $m, $t, $w, $r, $f, $s, $n))
{echo "Bind UPDATE didn't work";}
if(!$stmt->execute())
{echo "Execute UPDATE didn't work";}
但它在stmt->execute()行上返回了“注意:数组到字符串的转换”,执行更新失败。我读了一些书,发现这是因为如果不使用bind_param(),execute()会接受一个参数数组,因此我的bind_param无法正常工作
我提到了这个堆栈溢出线程和这个PHP文档。我尝试用这个prepare方法使用MySQL会话变量
$stmt = $db->prepare('SET @cid := ?');
$stmt->bind_param('i', $cid);
$stmt->execute();
对于每一个变量,我将不向我亲切的读者提交完整的列表,以及
if(!$stmt = $db->prepare("CALL update_comic(@cid, @ti, @ur, @sch, @ns,
@frm, @m, @t, @w, @r, @f, @s, @n)"))
{echo "Prepare UPDATE didn't work";
$result = false;}
if(!$stmt->execute())
{echo "Execute UPDATE didn't work";
$result = false;}
执行策略。这会产生与以前相同的错误。有没有人能用存储过程调用包含这么多变量的预处理语句
谢谢 这是一个非常简单的问题。其中至少有一个是数组,但它不应该是数组<代码>$cid、$ti、$url、$schedule、$nsfw、$form、$m、$t、$w、$r、$f、$s、$n。选中all以查看哪一个是数组,因为您的代码需要一个有效的字符串!非常感谢D