PHP向MySQL插入数据时,日期时间无法被MySQL接收,如果在MySQL中直接执行SQL语句着可以顺利完成。

表结构:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int_val` int(11) DEFAULT NULL,
`date_val` date DEFAULT NULL,
`bit_val` bit(1) DEFAULT NULL,
`varchar_val` varchar(255) DEFAULT NULL,
`time_val` time DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=latin1;

SQL语句:insert into test(`bit_val`,`date_val`,`time_val`) values(1,'2012-08-09 22:23:36','2012-08-09 22:23:36')
以上SQL用PHP的PDO_MYSQL执行,记录正常插入,但是time_val字段为NULL,同样这条SQL在MYSQL命令行中执行,运行结果正常time_val的值为'22:23:36'

有人知道这是为什么吗?如何让PHP的执行结果和MYSQL一致?
(请不要让我修改time_val的值,我也知道改成纯时间格式就没有问题了)
补充说明:PHP版本5.4.5,MYSQL版本5.5.13

第1个回答  2012-08-09
你确定把php的语句打印出来后 跟你发的那句一抹一样码?追问

确定,上面的语句就是PHP打印出来复制的,我测试了
insert into test(`bit_val`,`date_val`,`time_val`) values(1,'2012-08-09 22:23:36',‘22:23:36')
一样不行。感觉PHP就没法写MySQL的Time类型字段

追答

既然命令行都能插入,php区执行应该也可以的,是不是你的sql传进去后,PDO_MYSQL类里面又做了什么处理?可以写一段最原始的php连数据库的方法插那个sql试试,不要用封装好的pdo类,如果能插入,就说明pdo类里面有做处理。

本回答被提问者采纳

PHP 日期无法存入数据库
它是提示说你的sql语句有语法错误,自己再检查下,或者把你的sql语句打印出来,复制到mysql客户端执行下,以确认sql语句没有错误。

php mysql插入不进去数据
这个的原因可就多了。建议在你出错那段加以点儿mysql报错。这样起码知道为什么出错。很有可能是你的title之类的里面有多余的引号而没有被escape。一般起码会加上addslashes()。比如 $title=addslashes($_POST["title"]);echo mysql_error();echo "alert('添加文章出错!');";...

php连接不上mysql怎么办?
在上述代码中,你需要将 'your_username'、'your_password'、'your_database' 替换为实际的数据库连接信息。然后使用 new mysqli() 创建数据库连接对象,如果连接失败,会输出错误信息。连接成功后,你可以执行 SQL 查询和其他数据库操作。请注意,在实际使用中,应该将数据库连接信息存储在安全的位置,...

php无法向mysql数据库中添加数据怎么办?
你可以先在mysql里面执行一遍sql语句,看下能不能添加数据,先检查语句有没有问题,再看程序上的问题

php循环插入数据到mysql问题。。完成此问题小弟倾家荡产了
虽然不太确定你的问题,提供下我的想法吧。。。换句话说,一切操作以数组来循环的。那循环次数就是数组的长度;循环执行SQL语句,语句里的内容,是由循环索引决定;for($i : $shuzu){ sql=mysql_query("INSERT INTO test (aid,typeid,username,shuzu) Value('1','2','3',`shuzu[$i]`)")...

PHP向phpmyadmin中插入数据插入不成功?
echo "插入成功";改成:echo mysql_query($sql) ? '插入成功' : mysql_error();然后运行一下,如果输出“插入成功”,那你的数据库中是不可能没有数据的 如果输出一段英文,这段英文是返回的上一次mysql操作错误,也就是sql语句的运行错误结果,他很明确的告诉了你错误出现在哪里,如果你不懂英文...

请问一下。我的程序是php+mysql的 在调用的时候想用一个方法。调用数据...
)."' order by content asc limit 0,60";我想这个content字段应该已经是datetime类型的了 你直接content >='".date('Y-m-d H:i:s')." 后面的H代表时,i代表分,s代表秒 ,这样写代表当前的时间,content >='".date('Y-m-d H:i:s')." H,i,s你可以写成你想查的时分秒 ...

PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
一、在MySQL中完成 这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。1.UNIX时间戳转换为日期用函数:FROM_UNIXTIME()一般形式:select FROM_UNIXTIME(1156219870);2.日期转换为UNIX时间戳用函数:UNIX_TIMESTAMP()一般形式:Select UNIX...

MySQL如何能够在插入的记录的过程当中增加一个时间字段要求记录在指定...
一般来说这样是不行的, 除非你用php 在mysql 上创建一个 触发器 设置你想要的时间 然后执行某一段sql语句 这样是可以的

新手PHP连接MySQL数据库出问题
首先,通过WAMP打开mysql控制台。提示输入密码,因为现在是空,所以直接按回车。(wamp 默认数据库密码为空)然后输入“use mysql”,意思是使用mysql这个数据库,提示“Database changed”就行。然后输入要修改的密码的sql语句 “ update user set password=PASSWORD('hooray') where user='root'; ”最后...

相似回答