如何在查询中正确使用变量? PostgreSQL的

时间:2016-04-30 10:03:42

标签: php postgresql

$result = pg_query(Postgres::getInstance(), "SELECT 
date_start, 
date_end, 
cnt_hands, 
cnt_hands_won, 
amt_won, 
id_session,
id_player,
amt_won  
FROM 
cash_table_session_summary 
WHERE 
date_start = '2016-04-27 07:20:47'");

这很有效。

echo $sessionStart;
$result = pg_query(Postgres::getInstance(), "SELECT 
date_start, 
date_end, 
cnt_hands, 
cnt_hands_won, 
amt_won, 
id_session,
id_player,
amt_won  
FROM 
cash_table_session_summary 
WHERE 
date_start = $sessionStart");

这引发了这个:

  

2016-04-27 07:20:47警告:pg_query():查询失败:错误:语法   错误在“07”或附近第13行:... date_start = 2016-04-27 07:20:47 ^   在第102行的/home/haris/public_html/project/DAL_General.php

冒号有问题吗?我需要以某种方式逃脱吗?如果是这样,怎么样?我谷歌但没有发现逃避冒号。

2 个答案:

答案 0 :(得分:1)

我在学习数据库工作时遇到了同样的问题,但您需要在""中进行查询 - 然后在引用变量或数据时需要将其放入'的例子:

$test_query = type_of_connection_query("SELECT * FROM users WHERE id = '1'");

这不会像:

$text_query = type_of_connection_query("SELECT * FROM users WHERE id = 1");

当然有时你不需要引号,比如引用LIMIT

$text_query = type_of_connection_query("SELECT * FROM users WHERE id = '1' LIMIT 1");

答案 1 :(得分:1)

您的日期必须在引号内。你需要改变

FROM 
cash_table_session_summary 
WHERE 
date_start = $sessionStart

FROM 
cash_table_session_summary 
WHERE 
date_start = '$sessionStart'// add quotes here

要了解有关引号的更多信息,请选中When to use single quotes, double quotes, and backticks in MySQL