在我的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
答案 0 :(得分:1)
您似乎混淆了一些样式:Nor mysql_connect
和mysql_select_db
返回一个对象,并且不推荐使用所有mysql_*
函数。您的$dbh->query
声明似乎建议使用mysqli或PDO建立数据库连接。
您可能希望使用mysqli或PDO打开连接,然后将其分配给$dbh
变量。
答案 1 :(得分:1)
你必须使用
使用mysqli
这样的连接字符串$mysqli = new mysqli( "HOST", "USR", "PWD", "DBNAME" );
的链接
答案 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;
?>