通过变量组成sql语句报错

iloveora 2008-04-22 08: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') ;也不报错,而且能取到数据。

怎么回事啊?研究了一天没弄明白,哪位达人帮帮忙吧!
...全文
52 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
iloveora 2008-04-23
确实是sql出了错。结贴谢谢各位
回复
ten789 2008-04-22
别贴了 刚发现 变量作用域问题 把连接句柄设置成全局变量就好了
回复
ten789 2008-04-22
把数据结构和 $query打印结果 贴上来看看
回复
iloveora 2008-04-22
+号是javascript的写法吧?
我曾改成$query = "select * from t_table where col=" .$testnum;
没有用。


[Quote=引用 1 楼 kising 的回复:]
这么拼接试试看呢
$query = "select * from t_table where col=" + $testnum;
[/Quote]
回复
iloveora 2008-04-22
我把$query打印到页面上是没错的。在mysql客户端执行也没问题

[Quote=引用楼主 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…
[/Quote]
回复
ten789 2008-04-22
SQL语句要写规范
$sql = "SELECT * FROM `t_table` WHERE `col`='$testnum'";

如果查询出错 应该输出语句 到MYSQL工具中执行 测试
回复
jackyzsy2008 2008-04-22
对,就这样试试
回复
kising 2008-04-22
这么拼接试试看呢
$query = "select * from t_table where col=" + $testnum;
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-04-22 08:34
社区公告
暂无公告