我基本上试图创建一个pHp pdo参数绑定等价而不使用php。
我使用Navicat进行sql查询和构建,因此我可以做一些比phpmyadmin更有趣的事情。
我有一个特别的查询,它接受一个日期值并将其应用于(字面上)14 if,where和group by语句。我想基本上在页面顶部创建一个变量,比如说:
:date
然后在查询中,应用变量say:
WHERE date_inserted > :date
我相信这可以在存储过程中完成,但我想保留为查询(在查询编辑器中)
在php中,您可以使用pdo创建一个准备好的SQL查询,如下所示:
$stmt = $db->prepare("SELECT * FROM tablename WHERE field1 = :field1 AND datefield <= :date1 AND datefield2 >= :date1 AND datefield3 > :date1");
$stmt->bindParam(':field1', $somevariable);
$stmt->bindParam(':date1', $somedate);
$stmt->execute();
我想用sql完全相同的东西(使用navicat)
答案 0 :(得分:2)
在进一步研究我自己的问题之后,发现你可以使用:
在sql调用中设置变量SET @variablename = [value]
答案 1 :(得分:1)
这是另一个答案,因为您不想使用连接
SET @@session.var = 'some_value';
select * from table where field = @@session.var
尚未测试,但我从这里读到
http://forums.mysql.com/read.php?61,127011,127796#msg-127796
我认为变量将被保留,直到连接关闭并重新创建。
编辑: OP找到了答案的其余部分。按要求编辑。
您可以使用以下方法在SQL调用中设置变量:
SET @variablename = [value]
答案 2 :(得分:0)
你能提供整个查询吗?我认为如果派生表是SELECT语句,它可能会起作用。
一个简单的例子就是从这个
开始select * from table where field = 'somedate'
将其更改为此
select table.* from (select 'somedate' q)q, table where field = q.q
因此,q
是您的单行和单个字段的派生表,而q.q
是您的字段。
如果没有看到更多声明,我真的不知道更有帮助。
顺便说一句,我对PHP,phpmyadmin,Navicat或存储过程一无所知。只有自学成才的MySQL。