Pra*_*rya 2 php mysql stored-procedures
我用mysql编写了一个基本的存储过程
DELIMITER //
CREATE PROCEDURE `sp_sel_test`()
BEGIN
SELECT * FROM category c;
END//
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
现在我从php调用它
php代码是:
<?php
$txt = $_GET['id'];
$name = $_GET['name'];
$con = mysql_connect("localhost","four","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("fourthes_a", $con);
//$result = mysql_query("select * from new_c where name like %". $name ."% or c_name like %" . $name . "% order by name asc;");
$result = mysql_query("call sp_sel_test()");
if ($result === FALSE) {
die(mysql_error());
}
while($row = mysql_fetch_array($result))
{
echo $row['category_id'] . " " . $row['c_name'];
?>
<br />
<?php
}
mysql_close($con);
echo $txt;
?>
Run Code Online (Sandbox Code Playgroud)
现在它给出了错误
程序fourthes_a.sp_sel_test无法在给定的上下文中返回结果集
mysql_query()查询失败时返回false.您没有检查您的sproc查询是否成功,因此很可能您将该布尔值FALSE传递给fetch函数,这是正确的抱怨.
为了正确的错误处理,像这样重写你的代码,作为一个简单的代码:
$res = mysql_query('call sp_sel_test()');
if ($res === FALSE) {
die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
永远不要假设查询成功.即使SQL语法是完美的,但是有太多其他原因导致查询无法检查它是否有效.
| 归档时间: |
|
| 查看次数: |
29748 次 |
| 最近记录: |