Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正确的mysql语法是什么_Php_Mysql - Fatal编程技术网

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;它的目的是什么?)谢谢你的反馈!感谢您的反馈!感谢您的反馈!