什么是正确的mysql语法

时间:2012-12-23 15:10:03

标签: php mysql

请帮我解释这个语法。这是对的吗?

$query = mysql_query("SELECT * FROM axispl WHERE companyname LIKE $searchterm% LIMIT 11");

在网上的几个例子中,我看到`符号用于包含axispl或companyname。少数人不在场。有什么区别?

我的数据库有2列。首先有公司名称。其次是他们所属的类别。当公司名称与searchterm匹配时,我基本上希望查询选择其中的11对。

我应该提一下SELECT *还是应该提一下SELECT companyname,axiscategory? (这些是两列的名称)。

如果上述语法不正确,我应该更改什么?

4 个答案:

答案 0 :(得分:0)

您需要使用单引号引用搜索字词。

$query = mysql_query("SELECT * FROM axispl WHERE companyname LIKE '".mysql_real_escape_string($searchterm)."%' LIMIT 11");

如果你使用SELECT *或指定列并不重要 - 后者通常是位更快但是如果你还需要所有列通常无关紧要。

关于你的引用问题:

  • 始终转义您传递给查询的字符串。
  • 使用单引号引用查询中使用的字符串
  • 反引号用于引用数据库/表/列名称,仅在与保留关键字冲突时才有必要。

答案 1 :(得分:0)

反引号用于确保它们包含的内容被视为数据库,表或列名称,无论上下文要求如何。除了使其更具人性化外,它还允许您使用字面上的任何列名称,包括counttimestampfrom等保留字,数字列名{{1} },2550以及各种疯狂的符号,如果你真的想要的话。

但是,除此之外,您的搜索字词应该是引号,因为它是一个字符串。

答案 2 :(得分:0)

  

有什么区别?

没有区别。

反引号符号与标识符一起使用,这些标识符作为标识符名称无效。例如,如果您有一个名为保留字的列,在这种情况下,您必须使用反引号符号来转义它们。

在您的情况下,可以选择在列中使用`符号,因为它们是有效的标识符名称。

  

我应该提一下SELECT *还是应该提一下SELECT companyname,   axiscategory?

建议不要使用SELECT *并明确命名列的名称。

答案 3 :(得分:0)

首先,告诉您返回哪些列总是一个好主意,这样您就可以确保只返回所需的实际数据。对于一个这么小的表,它可能并不重要,但是如果你有50列和100 000行而你只需要前两列的列表呢?

引用列名和表名是一种很好的做法,当你碰巧在名字中使用reserved word(如SELECT,FROM,ADD,DELETE等)时,它不会一直保存你的名字。

同样在您的查询中,您需要单个引用LIKE的查询,因为它需要一个字符串。

$query = mysql_query("SELECT `companyname`, `axiscategory` FROM `axispl` WHERE `companyname` LIKE '$searchterm%' LIMIT 11");