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

标签 php mysql sql variables stored-procedures

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

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

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

  • 我看过手册,它说这是正确的语法。
  • 我也搜索了堆栈,但大多数问题都是基于 存储过程。

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

最佳答案

使用 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 防止返回不需要的结果集。

关于php - 在外部存储过程中使用 MySQL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573234/

相关文章:

php - 左右打印数组值(轮流)

php - Doctrine 2 : How to select ArrayCollection using DQL

Mysql - 我可以获取子选择结果并在 WHERE 子句中使用它吗?

sql - 使用其他表的属性以及新属性创建表

php - 如何从 HTML 标签中剥离数据

php - 选项值未提交到 MySQL 数据库 PHP

php - 在 Laravel 4 中更改 created_at 和 updated_at 的格式

mysql - 创建轮值表的用户

mysql - 在加入 Sql 之间时如何用例

mysql - SQL Join 并在 join false 时显示结果