1

これは私のPHPコードです

<?php
$code='1,2,3';
$this->db->query("CALL SP_db(\"$code\"));
?>

もし私var_dump($code)がこれを手に入れたらstring(5) "1,2,3"

これは私のストアドプロシージャコードです

CREATE DEFINER=`test`@`localhost` PROCEDURE `SP_db`(v_company varchar(10))

begin

select * from blabla where company_id in (v_company);
.
.
.

私はこのコードを使用してテーブルに値を挿入します。このコードを使用すると問題が発生します.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_companyの値をテーブルに保存して確認すると、動作します

phpからの値がテーブルに入力されたため

誰かがコードのどこが間違っているかを知ることができますか

4

2 に答える 2

2

プロシージャに「1,2,3」を渡すと、文字列が取得され、クエリは次のようになります。

select * from blabla where company_id in ('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);

ただし、インデックスはあまり使用されinません。

于 2012-11-29T09:33:24.813 に答える
0

あなたが行方不明だと思います"

$this->db->query("CALL SP_db(\"$code\") ");

またはこれを試してください

$this->db->query("CALL SP_db('".$code."') ");
于 2012-11-29T09:28:32.027 に答える