LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 616|回复: 1

[救命]php下查询mysql让我抓狂的问题。

[复制链接]
发表于 2003-10-3 08:19:21 | 显示全部楼层 |阅读模式
  1. <?php


  2. //输出一个表单
  3.        echo "<form name="form2" method="post" action="http://127.0.0.1/phptest/query/1.php">
  4.      输入名字
  5.      <input type="text" name="modify_name">
  6.      <input type="submit" name="ModifySubmit" value="提交">
  7.        <input type="reset" name="ModifyReset" value="重置">
  8.           </form>";

  9. //根据表单提交的变量查询
  10. if(!$modify_name or $moify_name=""){
  11.   $mod="addnew";
  12. }else{
  13.   $mod="modify";
  14.   echo $modify_name;
  15.   $result = mysql_db_query($dbname,"select * from $table where mobname = $modify_name");
  16.   $myrow = mysql_fetch_array($result);
  17. }
  18. ?>
复制代码





简单的说,就是我mysql_db_query函数里面的查询语句里 where field = $xxx 这里不能用变量,当变量值是中文或者英文的时候都查询不到数据库里已经有的内容,变量值是数字的话是正常的。where field="直接打中文还有字母"这样也是正常的。

详细情况出在 $result = mysql_db_query($dbname,"select * from $table where mobname = $modify_name"); 这句上,输入中文、英文查询都会出错,明明存在这个记录但是查询不到,输入数字查询正常,不用变量直接mobname=\"某个中文或者英文字母\"查询也是正常的。

换成用where mobname like $modify_name还是同样问题。

mobname字段用的类型mobname` varchar(15) NOT NULL default ''
本来以为可能是数据类型原因也改用过
mobname varchar(15) binary NOT NULL default ''
和mobname char(15) binary NOT NULL default ''
但是还是老问题。

换种查询方式SELECT * FROM table WHERE locate(mobname,$modify_name) > 0;问题依旧。

以为是我机器上php和mysql配置有问题,找了台商业空间的主机,还是一样的问题。

实在不知道是什么原因.......是不是我php写的有问题啊?大大们求教救命了!
 楼主| 发表于 2003-10-3 09:32:58 | 显示全部楼层
发现是查询语句里变量少了对单引号
$result = mysql_db_query($dbname,"select * from $table where mobname like '$modify_name'");

这样就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表