PHP MySQL使用参数调用存储过程

时间:2012-10-01 16:53:56

标签: php mysql stored-procedures

在我的php应用程序中,我需要从MySQL调用存储过程

我创建的程序就是这个。

DROP PROCEDURE IF EXISTS _proc.usp_hotel_rooms_mLoadByPrimaryKey;
CREATE PROCEDURE _proc.`usp_hotel_rooms_mLoadByPrimaryKey`(
_HTR_ID INT(11),
_HTR_TYPE_ID INT(11)
 )
 BEGIN

SELECT
    HTR_ID,
    HTR_NAME,
    HTR_TYPE_ID
FROM hotel_rooms_m
WHERE
    (HTR_ID = _HTR_ID AND HTR_TYPE_ID=_HTR_TYPE_ID)
  ;

 END;

我需要传递参数_HTR_ID和_HTR_TYPE_ID,所以我尝试了这样

<?php 
$con = mysql_connect("localhost","user","user")or die(mysql_error());
$db =  mysql_select_db("_proc") or die(mysql_error());
$par1 = "1";
$par2 = "2";
$dbh->query("CAST usp_hotel_rooms_mLoadByPrimaryKey($par1, $par2, @OutPut)");
 $dbh->query("SELECT @OutPut"); 
echo $dbh;
?>

这是我得到的错误Call to a member function query() on a non-object in D:\xampp\htdocs\_proc\index.php on line

3 个答案:

答案 0 :(得分:1)

您似乎混淆了一些样式:Nor mysql_connectmysql_select_db返回一个对象,并且不推荐使用所有mysql_*函数。您的$dbh->query声明似乎建议使用mysqli或PDO建立数据库连接。

您可能希望使用mysqli或PDO打开连接,然后将其分配给$dbh变量。

答案 1 :(得分:1)

你必须使用

使用mysqli

这样的连接字符串
$mysqli = new mysqli(  "HOST", "USR", "PWD", "DBNAME" );

以下是导师Mysql stored procedures with php

的链接

答案 2 :(得分:1)

这里你的代码

    <?php 
    $dbh = new PDO('mysql:host=localhost;dbname=_proc', "user", "user");
    $par1 = "1";
    $par2 = "2";
    $dbh->query("CAST usp_hotel_rooms_mLoadByPrimaryKey($par1, $par2, @OutPut)");
    $dbh->query("SELECT @OutPut"); 
    echo $dbh;
    ?>
相关问题