值从php转换为存储过程
这是我的php代码值从php转换为存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,这是我的php代码 <?php $code='1,2,3'; $this->db->query("CALL SP_db(\"$code\")); ?> 我使用此代码向表中插入一些值 问题是,如果我使用这段代码,我从php获得v_company,它不起作用 但如果我尝试填充值,它会起作用 CREATE DEFINER=`test`@`localhost` PROCEDURE `SP_db`(v_company varchar(10)) begin se
<?php
$code='1,2,3';
$this->db->query("CALL SP_db(\"$code\"));
?>
我使用此代码向表中插入一些值
问题是,如果我使用这段代码,我从php获得v_company,它不起作用
但如果我尝试填充值,它会起作用
CREATE DEFINER=`test`@`localhost` PROCEDURE `SP_db`(v_company varchar(10))
begin
select * from blabla where company_id in (1,2,3);
但是php发送的值由存储过程接收,
我试图将v_公司的价值保存到表中,以确保它正常工作
因为php中的值已输入到表中
那么,有人能告诉我代码哪里错了吗?我认为您缺少了
“
或者试试这个
$this->db->query("CALL SP_db('".$code."') ");
当您将'1,2,3'传递给您的过程时,您将得到一个字符串,并且您的查询将变为
select * from blabla where company_id in ('1,2,3');
不是
您可以使用find_in_set
代替in
select * from blabla where find_in_set(company_id, v_company);
但它不会像中的那样很好地使用索引;尝试使用PDO示例5yupp我也这么认为,但我不知道如何解释它……它就像一个魅力
select * from blabla where company_id in ('1,2,3');
select * from blabla where company_id in (1,2,3);
select * from blabla where find_in_set(company_id, v_company);