通过变量组成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') ;也不报错,而且能取到数据。

怎么回事啊?研究了一天没弄明白,哪位达人帮帮忙吧!
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;

21,886

社区成员

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

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