求助:php写入mysql数据问题!

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
我是个刚接触php和mysql的新手,在往数据库写数据的时候发现了下面的问题,还请各位高手给予指点迷津!多谢!我的mysql数据库中number表的结构由id,qihao和jianghao三个字段组成id字段定义为主键且自动增加1.qihao字段类型为varchar(4)jianghao字段类型为varchar(21)
我的php代码如下:<?php$database=\'test\';
//mysql服务器基本信息$username=\'root\';$passwd=\'123456\';$server=\'127.0.0.1\';$qihao=\'35\';
//要写入的数据变量$jianghao=\'03 02 05\';
$sql="insert into number(qihao,jianghao) values ($qihao,$jianghao)";
//写入数据的sql语句//检查变量值echo "qihao变量的值为qihao"."<p>";echo "jianghao变量的值为jianghao"."<p>";$link=mysql_connect($server,$username,$passwd); //建立连接if(!$link){
die( "数据库连接失败!" );
//如果连接失败就终止程序并提示错误}else {
mysql_select_db($database,$link);
//选择要操作的数据库
mysql_query($sql,$link);
//执行sql语句
mysql_close($link);
//关闭数据库}?>问题一: 当执行sql语句的时候,$jianghao变量的值在mysql中是030205而不是期望的03 02 05;问题二:如果把变量$jianghao的值改为\'03,02,05\',则程序执行完毕后,number表中没有添加任何记录,这是为什么我很奇怪!问题三:如果把变量$jianghao的值改为\'03-02-05\',则程序执行完毕后,number表中jianghao字段的值竟然是-4(负4),但是每次打印变量的值并没有问题.所以我很郁闷!另外:如果在命令行下执行sql语句,则问题二和问题三的情况都不会出现,就是说字段jianghao的值能够正确的为03,02,05 和 03-02-05 这说明mysql没有问题,可php代码我也看不出有什么不对劲的地方,真是伤透脑筋,请各位大侠帮帮忙,解决小弟的疑惑.多谢!!!

                                                                                                你这个问题在不同版本的数据库下具体表现会有些不同,不过原因都是一样的,就是查询语句错误。数据库需要的正确插入语句是:insert into number(qihao,jianghao) values (\'35\',\'03-02-05\')而你在php中实际提交的语句是:insert into number(qihao,jianghao) values (35,03-02-05)结果03-02-05成为一个表达式求值(就是3减2减5),得到-4,转为varchar型就是-4这个字符了。你其他两组输入也存在同样的问题。所以php中正确的语句应该是:$sql="insert into number(qihao,jianghao) values (\'$qihao\',\'$jianghao\')";这样就不会有错了。另外,所有的mysql语句都应该检查错误,而不仅仅是mysql_connect。                                        
提问者对答案的评价:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行