php单引号与双引号用法;引号嵌套方法
1、双引号内不能直接就再嵌套双引号
2、双引号与单引号互相嵌套使用
如:
双引号内直接嵌套单引号
- echo "<script language='javascript'> alert('插入成功');</script>" ;
- echo"<script language='javascript'>history.go(-2);</script>";
3、php中单引号内的变量不能被解释
如
- $c = 1;
- echo "$c"; //输出1
- $c = 1;
- echo '$c'; //输出$c
但是当用在sql语句中时当引号内有变量需要被解释时
如SQL语句可以写成:
- $sql = "select * from user where id = '$id'";
- $sql = "insert into user (`user`,`pwd`) values ('$a','$b')";
- $sql = "select * from user where id = {$id}";
- $sql = "insert into xadmin values ('','".$_POST['User']."','".$Pwd."','".$Xb."','".$Xydm."','".$_POST['Lxr']."','".$_POST['Lxdh']."','".$_POST['E_mail']."')";
变量都是可以被解释的
4、用来转义实现双引号内嵌套双引号(尤其是有变量的时候,双引号内的变量能被解释)
- function error($str,$url="")
- {
- if($url!="")
- {
- echo"<meta http-equiv="refresh" content="0;URL=$url">";
- exit();
- }
- else
- {
- echo"<script language="JavaScript" type="text/JavaScript"> alert("$str");history.back(-1);</script>";
- }
- exit();
- }
也可以写在这样
- echo "<script language='javascript'>alert("$str")</script>";
只要是sql语句里面的接受传过来的值得时候统一用这样的方式就不会有什么错误的
例如:$sql="INSERT INTO `Persons` (`FirstName`, `LastName`, `Age`)
VALUES
("'.$_POST[firstname].'"',"'.$_POST[lastname].'","'.$_POST[age]').'"";
就是列明还有数据表名都加反引号,$_POST[firstname]这种的呢都是
双引号 单引号 点 $_POST[firstname] 点 单引号 双引号,首先sql语句必须是双引号即
$sql=" ";这种格式的。$sql=
"INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"
;
单引号表示字符串啊,sql语句里字符串都是要单引号的,至于外面的双引号只是为了内部的函数执行做铺垫的。
$a = 1;
echo
'$a'
; => $a
echo
"$a"
=> 1
第一种【{$_GET['id']}加不加单引号都能正常执行没问题】
$sql = "select * from `news` where `id` = {$_GET['id']}"; $query = mysql_query($sql);
第二种【'{$_POST['con']}'第二种必须加单引号,否则没效果】
$sql = "insert into `news` (`id`,`title`,`dates`,`contents`) values(null,'{$_POST['tit']}',now(),'{$_POST['con']}')"; mysql_query($sql); echo "更新成功";
其实造成这种现象的原因如下图的js代码原理一样
综上,我是建议还是加上并将其养成良好的习惯。