如何在PHP函数中声明查询中的变量
我为这个问题挣扎了几天。 我想这很简单,但我看不出我做错了什么 我使用的是一个“functions.php”文件,其中保存了所有查询,每个查询都保存在自己的php函数中,类似于:如何在PHP函数中声明查询中的变量,php,mysql,variables,Php,Mysql,Variables,我为这个问题挣扎了几天。 我想这很简单,但我看不出我做错了什么 我使用的是一个“functions.php”文件,其中保存了所有查询,每个查询都保存在自己的php函数中,类似于: $query =' SELECT * FROM Table '; $query =' SET @myvar := 0 SELECT ID, @myvar := @myvar + SomeRow AS Result FROM Table '; 我现在希望能够在查询中使用变量,并
$query ='
SELECT *
FROM Table
';
$query ='
SET @myvar := 0
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table
';
我现在希望能够在查询中使用变量,并在查询中声明它们。比如:
$query ='
SELECT *
FROM Table
';
$query ='
SET @myvar := 0
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table
';
我一直在谷歌上搜索,找到了很多解决方案,但都没能奏效。。。我肯定错过了什么
欢迎任何建议
谢谢你,这是两个问题。所以你必须把它分开
$query ='
SET @myvar := 0;
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table;
';
或者你是这样开始的
$query ='
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table, (SELECT @myvar := 0) AS init
';
样本
MariaDB [test]> select id, order_ID from orders limit 10;
+-----+----------+
| id | order_ID |
+-----+----------+
| 632 | 111 |
| 633 | 111 |
| 634 | 111 |
| 635 | 112 |
| 636 | 113 |
| 637 | 113 |
| 638 | 113 |
| 639 | 113 |
| 640 | 113 |
| 641 | 113 |
+-----+----------+
10 rows in set (0.00 sec)
MariaDB [test]> SELECT id, @myvar := @myvar + order_ID
-> FROM orders, (SELECT @myvar := 0) AS init LIMIT 10;
+-----+-----------------------------+
| id | @myvar := @myvar + order_ID |
+-----+-----------------------------+
| 632 | 111 |
| 633 | 222 |
| 634 | 333 |
| 635 | 445 |
| 636 | 558 |
| 637 | 671 |
| 638 | 784 |
| 639 | 897 |
| 640 | 1010 |
| 641 | 1123 |
+-----+-----------------------------+
10 rows in set (0.00 sec)
这是两个问题。所以你必须把它分开
$query ='
SET @myvar := 0;
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table;
';
或者你是这样开始的
$query ='
SELECT ID, @myvar := @myvar + SomeRow AS Result
FROM Table, (SELECT @myvar := 0) AS init
';
样本
MariaDB [test]> select id, order_ID from orders limit 10;
+-----+----------+
| id | order_ID |
+-----+----------+
| 632 | 111 |
| 633 | 111 |
| 634 | 111 |
| 635 | 112 |
| 636 | 113 |
| 637 | 113 |
| 638 | 113 |
| 639 | 113 |
| 640 | 113 |
| 641 | 113 |
+-----+----------+
10 rows in set (0.00 sec)
MariaDB [test]> SELECT id, @myvar := @myvar + order_ID
-> FROM orders, (SELECT @myvar := 0) AS init LIMIT 10;
+-----+-----------------------------+
| id | @myvar := @myvar + order_ID |
+-----+-----------------------------+
| 632 | 111 |
| 633 | 222 |
| 634 | 333 |
| 635 | 445 |
| 636 | 558 |
| 637 | 671 |
| 638 | 784 |
| 639 | 897 |
| 640 | 1010 |
| 641 | 1123 |
+-----+-----------------------------+
10 rows in set (0.00 sec)
我不确定你到底想达到什么目的。你能向我们解释一下吗?我的目标是能够构建一个查询,将当前行的值与前一行的值相加,因此如果我有一行的值(1,2,3,4),结果应该是(1,3,6,10)。你需要提供更多信息/更好的解释。只是猜测一下,但您的问题要么是函数内部的问题,要么是尝试在
$query
中执行2个查询,而mysqli\u multi\u query()
以外的所有函数都只执行1个查询语句。如果我可以直接在mySQL中使用变量,我错了吗?我不是在说PHP变量(比如$myvar),而是在我的查询中内置的实际mySQL变量。我不确定您真正想要实现什么。你能向我们解释一下吗?我的目标是能够构建一个查询,将当前行的值与前一行的值相加,因此如果我有一行的值(1,2,3,4),结果应该是(1,3,6,10)。你需要提供更多信息/更好的解释。只是猜测一下,但您的问题要么是函数内部的问题,要么是尝试在$query
中执行2个查询,而mysqli\u multi\u query()
以外的所有函数都只执行1个查询语句。如果我可以直接在mySQL中使用变量,我错了吗?我不是在说PHP变量(比如$myvar),而是在我的查询中内置的实际mySQL变量。只是尝试了两个查询。1度的那个不行。2º的工作方式很有魅力。我知道你做了什么。。。简单而干净。。。应该考虑一下;)@维森特·查扎德——我也尝试过这两种方法,效果很好。如果“SomeRow”不是数字?@Vicente Chazard-出于某种原因,如果我在“选择我的查询”中断之前使用集合,那么我在回答中添加了一个示例。如果您使用的是mysql而不是mysqli,则在一次调用中只能执行一个查询。请尝试两个查询。1度的那个不行。2º的工作方式很有魅力。我知道你做了什么。。。简单而干净。。。应该考虑一下;)@维森特·查扎德——我也尝试过这两种方法,效果很好。如果“SomeRow”不是数字?@Vicente Chazard-出于某种原因,如果我在“选择我的查询”中断之前使用集合,那么我在回答中添加了一个示例。如果您使用mysql而不是mysqli,则在一次调用中只能执行一个查询