• php中单引号与双引号的区别


    举例1      单引号无法处理变量

    <?php
    
        header('Content-type:text/html;charset=utf-8');  //设置页面编码
        $content  = "hello php";
        echo "$content";
        echo "<br>";
        echo '<br>';
        echo '$content';
        echo '<br>';
        echo "what's my name?<br>";  //最简单的写法,单引号和双引号不产生冲突(conflict)
        echo 'what\' my name?<br>';  //用斜杠转义
        echo 'what\ts my name? <br>';       //无法处理转义字符,原样输出
        echo "我\"是\\'中国人";//关于转义字符,多说一句 比如我们想输出: 我"是\'中国人
    ?>

    以上程序输出结果为

    结论1:php里的单引号把内容当成纯文本,不会经过服务器翻译,php会在双引号包围的字符串中搜寻变量。用单引号代替双引号来包含字符串内容,这样做会更快一些。

    另外 echo “<br>”; echo ‘<br>’; 效果相同

    结论2:php中单引号不能处理转义字符(除了\\和\'这两个)以外,\n也不行。

    举例2      如何输出含有变量的字符串

    现在要输出this is your  email $email;  可以有两种方式

    $email=$_POST['email'];
    echo "this is your email $email";              //双引号服务器会自动解析
    echo 'this is your email'.$email;              //用连字符和纯字符串和变量链接起来

    常见的用途是建立大块的HTML字串代码,赋值号 (=) 连接符 (.) 可以被简写合并为 (.=) 符,ecshop中有如下例子

    $sql .= "AND g.cat_id " . db_create_in($id_list);

    举例3      SQL语句的写法

    SELECE *  FROM  email_table WHERE username="abc";

    查询的条件是常量时,php中可以写成

    $query="SELECE * FROM  email_table WHERE username='abc'";//query语句一定要用双引号括起来

    查询的条件是变量时,如$abc=$_POST['username'];php中可以写成

    $query="SELECT * FROM email_table WHERE  username=' ".$abc." ' ";

    可以分成几步理解:

    ①"SELECT * FROM email_table WHERE  username=' " 纯字符串

    ② .连接符,用来链接后面的字符

    ③$abc 显示变量的值

    ④." ' "连字符链接后面的单引号(为了与条件中的第一个单引号配对)

      其实不必这么复杂,可以这么写

    $query="SELECT * FROM email_table WHERE username='$abc' ";

    可以这么理解,双引号内部的全都要被服务器解析,单引号只是当成普通字符而已,而$abc会被当作变量解析。

    如果复杂一点,$abc为数组变量,则写成

    $abc=array("name"=>$_POST['username'],"age"=>$_POST['age']);
    
    $query="SELECT * FROM email_table WHERE username=' " .$abc["name"]." ' ";

    这样的写法可以按之前的那④个步骤就很容易理解了。

    以下是从ecshop的flow.php文件中copy出来的么几个sql语句,可以看看写法。

     $sql = "SELECT a.attr_id, a.attr_name, a.attr_type, ".
                "g.goods_attr_id, g.attr_value, g.attr_price " .
            'FROM ' . $GLOBALS['ecs']->table('goods_attr') . ' AS g ' .
            'LEFT JOIN ' . $GLOBALS['ecs']->table('attribute') . ' AS a ON a.attr_id = g.attr_id ' .
            "WHERE a.attr_type != 0 AND g.goods_id = '" . $goods->goods_id . "' " .
            'ORDER BY a.sort_order, g.attr_price, g.goods_attr_id';
    
     /* 检查是否有赠品 */
     $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' AND is_gift > 0";
    在路上...
  • 相关阅读:
    电脑快捷键大全
    js实现页面跳转
    List转换为字符串方法
    Bootstrap4显示和隐藏元素
    反向代理和正向代理区别
    springboot系列一:工作环境无法联网下快速搭建boot项目
    英语故事系列:冠状病毒传播或导致2020首季度全球经济出现萎缩
    BBS网站的制作
    Flask-SQLAlchemy数据库操作
    step-by-step install Nginx反向代理服务器(Ubuntu 18.04 LTS)(转)
  • 原文地址:https://www.cnblogs.com/chenkaiadd/p/3103717.html
Copyright © 2020-2023  润新知