从php访问mysql存储过程

时间:2014-01-08 11:14:34

标签: php mysql stored-procedures

我正在尝试使用mysql_query和mysql_fetch_array从PHP访问MYSQL程序,但是在程序返回有效后,我会在其他查询中收到以下错误。

警告:mysql_fetch_array()期望参数1为资源,布尔值在

中给出

我的代码:

function sql_fetch($sql){
   global $lang;

  $query = mysql_query($sql);

if($query === FALSE) {
   die(mysql_error()); // TODO: better error handling
}
while($row = mysql_fetch_array($query))
    $a[] = $row;
return $a;
}


$menus = sql_fetch("call GetTop4Products();"); // here returns all right
$news = sql_fetch("select * from news order by date_created desc limit 0,3"); // here returns error.

如果不是调用过程我把程序sql代码放进去,一切都顺利进行。

我收到的错误:

     Commands out of sync; you can't run this command now

2 个答案:

答案 0 :(得分:1)

您在mysql_fetch_array中传递了错误的参数。必须将查询资源($ result)连接作为参数传递。如果要调用存储过程,则必须使用mysqli_query而不是mysql_query。

How to call a MySQL stored procedure from within PHP code?

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);  
}

mysql_free_result($result);
?>

答案 1 :(得分:0)

检查变量声明或调用部分中是否缺少引号。在php引号中引起很多头痛