繁体   English   中英

MySQL存储过程:“字段列表”中的未知列“ Table_Name”

[英]MySQL Stored Procedure: Unknown column 'Table_Name' in 'field list'

我目前正在尝试使用以下方法创建我的第一个存储过程:

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'

我如何修改我的存储过程,以便允许传入表名并能够获取行数。

像这样创建SP。 大多数likley都没有在正确的数据库中查找。

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$$

并确保CALL参数用'换行。 我不确定如何在PHP中包含',但我确定您知道:)

CALL GetNumRows('$this->tableName')

编辑

Ive现在已更改,因此数据库名称也作为参数传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM