MYSQL语句疑惑

WBOY
WBOYOriginal
2016-06-23 14:13:141122browse

 $sql="select * from news where id = '".$_GET['id']."'";
 $query=mysql_query($sql);
 $rs=mysql_fetch_array($query);


上面那句查询语句为什么这样写会出错$sql="select * from news where id = $_GET['id']";
求解答,新手关于单引号和双引号的区别和为什么要上面那样写,不明白,谢谢!


回复讨论(解决方案)

可以加个{} 
$sql="select * from news where id = {$_GET['id']}";

$sql="select * from news where id = $_GET['id']";

这样写应该没错,提示什么错误??

可以加个{} 
$sql="select * from news where id = {$_GET['id']}";

能解释一下吗?为什么那样不行,而你这样可以呢?

$sql="select * from news where id = $_GET['id']";

这样写应该没错,提示什么错误??

出错:Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\just\edit.php on line 5

这是 php 的约定,没有什么为什么
在双引号中出现关联数组的成员时,必须写作
"$_GET[id]"

"{$_GET['id']}"

这是 php 的约定,没有什么为什么
在双引号中出现关联数组的成员时,必须写作
"$_GET[id]"

"{$_GET['id']}"

嗯,按照你的格式2个都不会报错。
$nc=$_POST[nc];
$sql=mysql_query("select * from tb_user where name='".$nc."'",$conn);

$nc是一个普通变量接受$_POST[nc]赋给的值,那下面为什么看到别人还要这样写呢"select * from tb_user where name='".$nc."'"

echo $sql; 一切就明白了

为什么看到别人还要这样写呢"select * from tb_user where name='".$nc."'"
那是因为他不知道或习惯于他原来用的语言
当然也可能是听信了别人的误导,认为
"select * from tb_user where name='$nc'"
需要寻址而导致效率变低
殊不知,"select * from tb_user where name='". $nc."'"
一样也有个寻址过程呢?

哦,我以为是固定那样写的,这个PHP单双引号和C,C++里搞混了。字符串和单个字符。谢谢大家!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn