在外部存储过程中使用MySQL变量

时间:2015-09-14 20:19:43

标签: php mysql sql variables stored-procedures

我正在尝试学习如何在MySQL中使用变量:

$query = "
    SET @myid = '1234';
    SELECT * FROM `table1` WHERE `id` = @myid;
";

但我在第1行遇到语法错误。

  • 我查看了手册,并说明这是正确的语法。
  • 我也搜过堆栈,但大部分问题都是基于 商店程序。

MySQL变量仅限于存储过程吗?如果不是我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用mysqli_multi_query()

尝试在查询中使用内联变量会在第1行引发语法错误。谢谢Marc B。

SET @myid = '<?php echo $myid; ?>';
SELECT t.*,
    CASE WHEN m.`dob` BETWEEN @uDateStart AND @uDateEnd
    etc...

我的解决方案是使用mysqli::multi_querymysqli_multi_query,如此:

$this -> db -> multi_query($sql);
$i = 0;
$querySelect = 1; //query 1
do{
    if($result = $this -> db -> store_result()) {
        if($i === $querySelect) {
            while($row = mysqli_fetch_array($result)) {
                $data[] = $row;
            }
            mysqli_free_result($result);
        }
    }
    $i++;
} while($this -> db -> more_results() && $this -> db -> next_result());

$querySelect可防止返回不需要的结果集。