首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 通过变量组成sql语句报错 [已结贴,结贴人:iloveora]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iloveora
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-04-22 20:34:48 楼主
    php调用Mysql数据库:
    function getNum($testnum)
    {
    //连接数据库语句省略
    $query = "select * from t_table where col= $testnum";
    $result = mysql_query($query,$db);
    $num = mysql_num_rows($result);
    echo "num:".$num;
    mysql_close($db);
    return($num);
    }
    $result = getNum($thatnum) ;

    col为bigint型。
    调用getNum报错mysql_num_rows(): supplied argument is not a valid MySQL result resource in 。。。

    如果sql里的变量加上单引号,变为$query = "select * from t_table where col= '$testnum'";就不报错,但是找不到数据(表里字段都不为空)。

    如果调用时不传变量,直接传进去个常量$result = getNum('252366') ;也不报错,而且能取到数据。

    怎么回事啊?研究了一天没弄明白,哪位达人帮帮忙吧!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kising
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 20:41:101楼 得分:5
    这么拼接试试看呢
    $query = "select * from t_table where col=" + $testnum;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jackyzsy2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 21:06:172楼 得分:0
    对,就这样试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ten789
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 21:56:003楼 得分:15
    SQL语句要写规范
    $sql = "SELECT * FROM `t_table` WHERE `col`='$testnum'";

    如果查询出错 应该输出语句 到MYSQL工具中执行 测试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iloveora
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 22:14:424楼 得分:0
    我把$query打印到页面上是没错的。在mysql客户端执行也没问题

    引用楼主 iloveora 的帖子:
    php调用Mysql数据库:
    function getNum($testnum)
    {
    //连接数据库语句省略
    $query = "select * from t_table where col= $testnum";
    $result = mysql_query($query,$db);
    $num = mysql_num_rows($result);
    echo "num:".$num;
    mysql_close($db);
    return($num);
    }
    $result = getNum($thatnum) ;

    col为bigint型。
    调用getNum报错mysql_num_rows(): supplied argument is not a valid MySQL result res…
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iloveora
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 22:16:015楼 得分:0
    +号是javascript的写法吧?
    我曾改成$query = "select * from t_table where col=" .$testnum;
    没有用。


    引用 1 楼 kising 的回复:
    这么拼接试试看呢
    $query = "select * from t_table where col=" + $testnum;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ten789
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 22:22:206楼 得分:0
    把数据结构和 $query打印结果 贴上来看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ten789
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-22 22:34:487楼 得分:0
    别贴了 刚发现 变量作用域问题 把连接句柄设置成全局变量就好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iloveora
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-04-23 09:12:468楼 得分:0
    确实是sql出了错。结贴谢谢各位
    修改 删除 举报 引用 回复

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