一条SQL语句的问题

紫影 2011-02-07 09:05:59
最近刚接触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());

但这样拼的太麻烦了,请问有其他简单方法吗?
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Abin-2008 2011-02-25
  • 打赏
  • 举报
回复
$data=('name'=>'123'...)
insert 表 set 字段=值,字段=值
jaksmine 2011-02-10
  • 打赏
  • 举报
回复
insert into msgbox() values(null,'{$_REQUEST['name']}','{$_REQUEST['mail']}','{$_REQUEST['text']}',now());
happypiggy2010 2011-02-09
  • 打赏
  • 举报
回复
insert into msgbox() values(null,'$_REQUEST["name"]','$_REQUEST["mail"]','$_REQUEST["text"]',now());
lazysmile 2011-02-09
  • 打赏
  • 举报
回复
话说你这表名没问题吧,怎么有括号
lazysmile 2011-02-09
  • 打赏
  • 举报
回复

$sql = sprintf("insert into msgbox() values(null,'','%s','%s',now())",$_REQUEST['name'],$_REQUEST['text']);
skyaspnet 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 seaely 的回复:]
最近刚接触PHP,使用中需要往数据库插入数据,有条SQL语句为:
SQL code
insert into msgbox() values(null,'$_REQUEST['name']','$_REQUEST['mail']','$_REQUEST['text']',now());

但一直报错,后来不得不更改为:
SQL code
insert into msgbox() value……
[/Quote]

引号的问题:

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
Abin-2008 2011-02-08
  • 打赏
  • 举报
回复
用数组传递..
键值就是 那个要插入的字段.和值
life169 2011-02-08
  • 打赏
  • 举报
回复

insert into msgbox() values(null,"{$_REQUEST['name']}","{$_REQUEST['mail']}","{$_REQUEST['text']}",now());
phf0313 2011-02-07
  • 打赏
  • 举报
回复
'$_REQUEST[name]'……以此类推。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧