php - 使用 _POST 参数构建 SQL 查询

标签 php mysql

我正在尝试构建动态查询,但遇到 SQL 语法错误。以下查询语句在显式输入时可以正常工作:

$sql = "SELECT * FROM English WHERE submitdate = '2015-09-30'";

但是,如果我尝试使用 _POST 参数构建相同的查询,我会收到语法错误,即使该错误显示了如上所示的正确查询:

if ($_POST["lang"] === "de") :
  $query_lang = 'SELECT * FROM German';
elseif ($_POST["lang"] === "en") :
  $query_lang = 'SELECT * FROM English';
else :
  $query_lang = 'SELECT * FROM English, German';
endif;

if ( !empty($_POST["date"]) || $_POST["date"] != "all") :
  $query_date = ' WHERE submitdate = \''. $_POST["date"] . '\'';
else :
  $query_date = '';
endif;

$sql = '"' . $query_lang . $query_date . '"';

错误信息是

Error: "SELECT * FROM English WHERE submitdate = '2015-09-30'"<br>
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 
'"SELECT * FROM English WHERE submitdate = '2015-09-30'"' at line 1

最佳答案

我觉得你在写

"SELECT * FROM English WHERE submitdate = '2015-09-30'"

代替

SELECT * FROM English WHERE submitdate = '2015-09-30'

试试把这个

$sql = $query_lang . $query_date;

看看有没有效果

关于php - 使用 _POST 参数构建 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904856/

相关文章:

javascript - 如何用 PHP 打印 JavaScript

mysql - 为我的 SQL Server 声明并设置无法识别的语法

mysql - 我想隐藏 id,如果不喜欢,但不起作用 SELECT * FROM 字符,character_actor WHERE 字符.id 不喜欢character_actor.character_id;

mysql - "Fatal error encountered during command execution"我正在使用 SET 和 SELECT xxx FROM (SELECT xxx FROM xxx)

php - 通过我的代码创建/更新/删除还是在数据库中手动操作?

php - Paypal Express 结账 NO PRICE

php - 使用 PHP 从 MySQL 表中选择过期记录

php - 如何使用密码保护网站上可下载的 pdf 文件

php - Laravel+MySQL : temporary table can be created/updated but not selected from:

mysql 连接两个具有空值的表