PDO执行有BUG
数据库$params = array(
'id' => 3589,
'blog_num' => 378383144,
);
$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password', array(PDO::ATTR_CASE=>PDO::CASE_LOWER,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$stmt = $db->prepare("update music_blogs set id = :id, blog_num = :blog_numwhere id = :id");
$stmt->execute($params);
print_r($stmt->rowCount());
print_r($db->errorInfo());
这条语句在lnmp0.8下面执行无效 影响结果集为0 错误代码为执行成功的0000说明执行成功了但是blog_num字段并没有更新
本地apache php5.2.11,sae php5.3.8均执行通过
如果改为这样lnmp可以执行正确
$stmt = $db->prepare("update music_blogs set id = 3589, blog_num = :blog_numwhere id = :id");
不知道是不是lnmp的PDO版本有问题? 这个不太清楚,安装方法和程序版本都是按官网的 神啊 我总算明白了 PDO不应该从官方去下载的官方已经不在维护pecl的PDO了 而PDO早已经被包含到phpX.X.X/ext/pdo_msql里面了
这个目录里面才是最新最稳定的 因此要去掉shell里面的
wget -c http://soft.vpser.net/web/pdo/PDO_MYSQL-1.0.2.tgz
以及后面的编译
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
cd ../
否则永远会将2006年老的BUG很多的PDO覆盖到PHP扩展里面了
所以不应该去pecl拉建议去掉centos.sh upgrade_php.sh里面的 pdo_mysql-1.0.2的编译改为进入phpX.X.X/ext/pdo_mysql目录然后编译
如下
进入lnmp目录
cd lnmp0.8-full/php-5.2.17/ext
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
然后重启php-fpm
/ect/init.d/php-fpm restart
页:
[1]