最近刚接触PHP,使用中需要往数据库插入数据,有条SQL语句为:
insert into msgbox() values(null,'$_REQUEST['name']','$_REQUEST['mail']','$_REQUEST['text']',now());
但一直报错,后来不得不更改为:
insert into msgbox() values(null,'".$_REQUEST['name']."','".$_REQUEST['mail']."','".$_REQUEST['text']."',now());
但这样拼的太麻烦了,请问有其他简单方法吗?

解决方案 »

  1.   

    '$_REQUEST[name]'……以此类推。
      

  2.   


    insert into msgbox() values(null,"{$_REQUEST['name']}","{$_REQUEST['mail']}","{$_REQUEST['text']}",now());
      

  3.   

    insert into msgbox() values(null,'$_REQUEST["name"]','$_REQUEST["mail"]','$_REQUEST["text"]',now());
      

  4.   


    $sql = sprintf("insert into msgbox() values(null,'','%s','%s',now())",$_REQUEST['name'],$_REQUEST['text']);
      

  5.   


    引号的问题:insert into msgbox() values(null,'$_REQUEST['name']','$_REQUEST['mail']','$_REQUEST['text']',now());改为insert into msgbox() values(null,'{$_REQUEST['name']}','{$_REQUEST['mail']}','{$_REQUEST['text']}',now());
    另外为了安全起见,建议使用addslashes或者是mysql_real_escape_string进行转义:
    addslashes
    (PHP 4, PHP 5)addslashes — 使用反斜线引用字符串说明
    string addslashes ( string $str )
    返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。 默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。 
    Example #1 addslashes() 例子<?php
    $str = "Is your name O'reilly?";// 输出:Is your name O\'reilly?
    echo addslashes($str);
    ?> 
    ==========================================================================
    mysql_real_escape_string
    (PHP 4 >= 4.3.0, PHP 5)mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 说明
    string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
    本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。 Note: mysql_real_escape_string() 并不转义 % 和 _。 
    Example #1 mysql_real_escape_string() 例子<?php
    $item = "Zak's and Derick's Laptop";
    $escaped_item = mysql_real_escape_string($item);
    printf ("Escaped string: %s\n", $escaped_item);
    ?> 
    以上例子将产生如下输出: Escaped string: Zak\'s and Derick\'s Laptop
      

  6.   

    insert into msgbox() values(null,'{$_REQUEST['name']}','{$_REQUEST['mail']}','{$_REQUEST['text']}',now());
      

  7.   

    $data=('name'=>'123'...)
    insert 表 set 字段=值,字段=值