php - 如何在存储过程中添加where条件作为参数?

标签 php mysql stored-procedures

我不知道是否可能。每当参数 id 获取值时,它都会显示错误//Unknown table 'tbl_news' in field list

function select_table_img ($type,$eid)
    {
        if($b==NULL)
        {
            $id=1;
        }
        else
        {
            $id="tbl_news.nid='$eid'";
        }
        echo $sql = "CALL Proc_selectvideo('$type',$id)";//call the stored procedure
        $result = mysql_query($sql)or die(mysql_error());
        return $result;
    }

这是我的存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `Proc_selectvideo`(IN `type` VARCHAR(500), IN `id` VARCHAR(500))

select * from tbl_news,tbl_video where  tbl_news.nid  = tbl_video.cid and tbl_news.ntype=type and id

最佳答案

如果我明白了,问题是您从 php.ini 发送的单引号。

$id="tbl_news.nid='$eid'";

也许您可以在存储过程中使用 IF 语句或 CASE 尝试不同的方式来解决它。

$id=$eid;

CREATE DEFINER=`root`@`localhost` PROCEDURE `Proc_selectvideo`(IN `type` VARCHAR(500), IN `id` VARCHAR(500))

DECLARE part_of_query VARCHAR(300) DEFAULT '';

SET part_of_query = CASE 
    WHEN id IS NOT NULL THEN CONCAT(" AND tbl_news.nid='",id,"' ")
    ELSE 'maybe other parameter or rule...'
END;

select * from tbl_news,tbl_video where  tbl_news.nid  = tbl_video.cid and tbl_news.ntype=type part_of_query

关于php - 如何在存储过程中添加where条件作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680078/

相关文章:

php - SQL - 如果记录存在于表中,则插入到表中

spring - MySQL 查询在我的应用程序中失败,但在 MySQL 命令行工具中成功

sql-server - 当列被索引时,如何将列更改为 NOT NULL

php - 如何通过 PHP 从 Swift 将 UIImage 上传到 MySQL?

php - 未找到列 : 1054 Unknown column 'id' in 'where clause' - Laravel

java - 从 JDBC 调用 HSQL 函数

mysql - 我是否需要担心给定场景中更新操作中同时请求的影响

php - 如何将 Apache Solr 与 mysql 连接

php - 表不输出所有列

php - 在 PHP 上使用 Gmail 发送电子邮件时出现 SMTP 错误