首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的MYSQL查询中,我需要在哪里使用反引号或引号?

在我的MYSQL查询中,我需要在哪里使用反引号或引号?
EN

Stack Overflow用户
提问于 2012-01-03 03:27:39
回答 3查看 3.8K关注 0票数 1

我正在尝试运行以下查询,但我不确定my的是否应该是's,$form_id =记录的列,$user_id是名为cf_id的记录的主键。

稍后将在脚本中回显$querydate,因为它从等于$form_id和$user_id的记录中提取日期。

代码语言:javascript
复制
$querydate = mysql_query("SELECT '$form_id' FROM email_history WHERE cf_id = '$user_id'") or die(mysql_error());

编辑>>>>>>

在尝试了下面的一些解决方案之后,它似乎工作得很好,但是我没有获得存储在表单名称下的日期,而是得到了这个回显,所以我不确定现在发生了什么::Resource id #120 :Resource id #121 :Resource id #122 :Resource id #123

该表的设置如下:

代码语言:javascript
复制
[USER_ID] [FORM_ID1212212]  [FORM_ID1212112]  
 [1]      [2-1-2012]        [2-1-2012]       
 [2]      [1-1-2012]        [1-1-2012]       
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-03 03:30:38

表名和列名使用反引号(`),字符串使用单引号(')。

代码语言:javascript
复制
$querydate = mysql_query("SELECT `$form_id` FROM email_history WHERE cf_id = '$user_id'"); 

仅当您的表名或列名是MySQL保留字时才需要反引号...最佳实践是避免保留字

但也可以考虑切换到PDO并使用预准备语句,或者至少切换到mysqli而不是mysql。

票数 6
EN

Stack Overflow用户

发布于 2012-01-03 03:30:21

最佳实践是:

代码语言:javascript
复制
"SELECT `$form_id` FROM `email_history` WHERE `cf_id` = '$user_id'"

字段名和表名(以及数据库名)应该使用反引号,值应该使用引号。

票数 1
EN

Stack Overflow用户

发布于 2012-01-03 03:46:21

您应该:

  1. 确保$form_id是一个合法的表名,特别是当它是从用户提供的输入生成的时候。对$user_id

使用绑定参数的

例如:

代码语言:javascript
复制
$sql = "SELECT `$userid` FROM `email_history` WHERE `cf_id` = ?"
$res = $db->query($sql, array($user_id));
while ($row = $res->fetchRow()) {
   ...
}

反划线适用于所有的表名和列名。不幸的是,您不能在参数化查询中使用变量列名,因此您确实需要手动构造查询的该部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8704587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档