首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • php中sql语句的问题。 急急急! [已结贴,结贴人:wutao99999999]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 02:38:40 楼主
    $queryitems = "SELECT itm.* FROM wutao.item as itm, wutao.category as cate where cate.itemid=itm.itemid and cate.category = '".$_GET['category']."'";


    上面那段语句一般可以得到正确的结果,但是不知道为什么当$_GET['category']的值为serina's 时就会出错,问题就出在'这个符号上,请问怎么解决这一问题?

    谢谢了。
    60  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • justicesun
    • 等级:
    发表于:2008-05-11 05:16:101楼 得分:0
    $_GET[category]  try一下看看行不
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iasky
    • 等级:
    发表于:2008-05-11 08:04:252楼 得分:18
    你的php的配置是什么?

    你的get的值中有‘

    你可以试一试 mysql_real_escape_string($_GET['category'])


    例子:
    <?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

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 09:13:363楼 得分:15
    进行转议,试试

    一、$_GET['category']=addslashes($_GET['category']")
    $queryitems = "SELECT itm.* FROM wutao.item as itm, wutao.category as cate where cate.itemid=itm.itemid and cate.category = '".$_GET['category']."'";
    二、将'替换为\'
    $_GET['category']=str_replace ( "'", "\'",$_GET['category'] )

    $queryitems = "SELECT itm.* FROM wutao.item as itm, wutao.category as cate where cate.itemid=itm.itemid and cate.category = '".$_GET['category']."'";
    试一下


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzty
    • 等级:
    发表于:2008-05-11 10:33:564楼 得分:17
    PHP code
    <?php function insertMysql($str) { if(get_magic_quotes_gpc())return $str; //'--这里添加对应的转义规则 $arr =array('\\', '\''); $patt=array('\\\\','\\\''); return str_replace($arr,$patt,$str); } $str = insertMysql($str); //'-------4 $_GET = array_map('insertMysql', $_GET); $_POST = array_map('insertMysql', $_POST); $_SERVER = array_map('insertMysql', $_SERVER); //'-------5 $_GET = array_walk_recursive($_GET, 'insertMysql') $_POST = array_walk_recursive($_POST , 'insertMysql'); $_SERVER = array_walk_recursive($_SERVER , 'insertMysql'); ?>

    http://blog.tonyang.com/?action=show&id=90
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 10:44:545楼 得分:3
    经典php电子书

    http://www.51cnnet.net/search?q=php&commit=Go
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-05-11 10:54:116楼 得分:0
    用的什么数据库?

    mySQL 的话  \'
    sql server ''
    ==== ====
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 10:55:447楼 得分:0
    自己转义一下就OK了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 12:14:018楼 得分:0
    引用 7 楼 Aylazhang 的回复:
    自己转义一下就OK了。

    同意楼上的 :)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 12:54:269楼 得分:0
    这种有特殊字符的是没办法解决的``
    只有过滤掉
    可以参考:http://www.cndw.com/tech/asp/20000624296.asp
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dada20042030
    • 等级:
    发表于:2008-05-12 13:52:3210楼 得分:0
    addslashes()
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 14:27:2811楼 得分:0
    推荐写法:
    PHP code
    $queryitems = sprintf( "SELECT itm.* FROM wutao.item as itm, wutao.category as cate where cate.itemid=itm.itemid and cate.category='%s'", addslashes($_GET['category']) );


    用sprintf()格式化查询语句,用addslashes()对特殊字符转义.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 17:56:2912楼 得分:2
    支持我11楼的写法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:04:1613楼 得分:2
    魔术引号没有打开?

    $magic_quotes_gpc = get_magic_quotes_gpc();
    if(!$magic_quotes_gpc)
    {
    $_POST = addslashes($_POST);
    $_GET = addslashes($_GET);
    }

    phpcms的作法..把post与get的数组自动转义.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:49:0914楼 得分:2
    $queryitems = "SELECT itm.* FROM wutao.item as itm, wutao.category as cate where cate.itemid=itm.itemid and cate.category = '".addslashes($_GET['category'])."'"; 试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 12:45:1215楼 得分:1
    \'就可以啦   

    看来是个菜鸟!早期的php都是采用\"的方式来写引用符的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved