热搜:NVER node 开发 php

MYSQL语句疑惑

2024-09-15 14:45:01
MYSQL语句疑惑

 $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++里搞混了。字符串和单个字符。谢谢大家!