Php 正确的mysql语法是什么
请帮我理解这个语法。这是正确的吗Php 正确的mysql语法是什么,php,mysql,Php,Mysql,请帮我理解这个语法。这是正确的吗 $query = mysql_query("SELECT * FROM axispl WHERE companyname LIKE $searchterm% LIMIT 11"); 在网上的几个例子中,我看到`符号被用来括住axispl或companyname。很少有人不在场。有什么区别 我的数据库有两列。First有公司名称。第二类是他们所属的类别。我基本上希望当公司名称与searchterm匹配时,查询选择其中的11对 我应该提到SELECT*还是应该提到
$query = mysql_query("SELECT * FROM axispl WHERE companyname LIKE $searchterm% LIMIT 11");
在网上的几个例子中,我看到`符号被用来括住axispl或companyname。很少有人不在场。有什么区别
我的数据库有两列。First有公司名称。第二类是他们所属的类别。我基本上希望当公司名称与searchterm匹配时,查询选择其中的11对
我应该提到SELECT*还是应该提到SELECT companyname,axiscategory?(这是两列的名称)
如果以上语法不正确,我应该更改什么?您需要用单引号引用搜索词
$query = mysql_query("SELECT * FROM axispl WHERE companyname LIKE '".mysql_real_escape_string($searchterm)."%' LIMIT 11");
使用SELECT*
或指定列实际上并不重要——后者通常会快一点,但如果仍然需要所有列,则通常并不重要
关于你的报价问题:
- 始终转义传递到查询中的字符串
- 使用单引号引用查询中使用的字符串
- 反勾号用于引用数据库/表/列名,仅当它们与保留关键字冲突时才需要
计数
,时间戳
,自
,数字列名25
,50
,100
,以及所有您真正想要的疯狂符号
然而,撇开这一点不谈,你的搜索词应该用引号括起来,因为它是一个字符串
$query = mysql_query("SELECT `companyname`, `axiscategory` FROM `axispl` WHERE `companyname` LIKE '$searchterm%' LIMIT 11");
有什么区别
没有区别
反勾号符号与作为标识符名称无效的标识符一起使用。例如,如果您有一个名为保留字的列,在这种情况下,您必须使用反勾号符号对其进行转义
在您的情况下,可以选择在列中使用'symbol',因为它们是有效的标识符'名称
我应该提到SELECT*还是应该提到SELECT companyname,
Axis类别
建议不要使用选择*
并显式命名列的名称 首先,告诉您返回的列始终是一个好主意,这样您就可以确保只返回所需的实际数据。对于一个如此小的表,这可能没什么大不了的,但是如果您有50列和100000行,并且只需要前两列的列表,会怎么样呢
引用列名和表名是一种很好的做法,但当您碰巧在名称中使用了(如SELECT、FROM、ADD、DELETE等)时,并不总是需要引用列名和表名
同样在查询中,您需要为LIKE单独引用查询,因为它是一个字符串
$query = mysql_query("SELECT `companyname`, `axiscategory` FROM `axispl` WHERE `companyname` LIKE '$searchterm%' LIMIT 11");
. 它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。根据您的反馈,我已经更改了以下代码:mysql_connect('localhost','username','password');mysql_select_db('pl')或die(“无法选择数据库”);到PDO('mysql:host=localhost;dbname=pl;charset=UTF-8','username','password');这是正确的还是我必须把它传递给一个变量(在PDO教程中,它被传递给一个变量db;它的目的是什么?)谢谢你的反馈!感谢您的反馈!感谢您的反馈!