我目前正在尝试使用以下命令创建我的第一个存储过程:
DELIMITER $$
CREATE PROCEDURE `GetNumRows` ( IN tab_name VARCHAR( 40 ) )
BEGIN
SET @t1 = CONCAT( 'SELECT COUNT(*) FROM ', tab_name) ;
PREPARE stmt3 FROM @t1 ;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END$$并用这个来调用它:
$query = $this->mysqli->query("CALL GetNumRows($this->tableName)");
if($query == false)
{
die("mySQLi Error: ".$this->mysqli->error);
}很明显,我甚至不能通过这个,我得到了这个死:
mySQLi Error: Unknown column 'gps_location' in 'field list'如何修改我的存储过程,以允许传入表名并获得行数。
发布于 2014-03-25 02:43:07
如下所示创建SP。这很可能是因为没有在正确的数据库中查找。
DELIMITER $$
CREATE PROCEDURE `GetNumRows` (IN database_name VARCHAR(50),
IN tab_name VARCHAR(40) )
BEGIN
SET @t1 = CONCAT('SELECT COUNT(*) FROM ',database_name,'.', tab_name,';');
PREPARE stmt3 FROM @t1 ;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END$$并确保调用参数用'包装。我不确定如何在php中包含‘,但我相信你知道:)
CALL GetNumRows('$this->tableName')编辑
现在我已经改变了,所以数据库名也可以作为参数传递。
https://stackoverflow.com/questions/22617742
复制相似问题