【发布时间】:2014-02-04 18:57:17
【问题描述】:
我正在使用 mysqli 将我的 php 代码连接到 mysql,并且我正在使用 MYSQLI_CLIENT_FOUND_ROWS 选项来确保我的 UPDATE 语句将返回非零,即使它们尝试使用它已经拥有的相同值更新记录。
$mysqli->real_connect(
$this->DB_HOST,
$this->DB_USERNAME,
$this->DB_PASSWORD,
$this->DB_DATABASE,
3306,
null,
MYSQLI_CLIENT_FOUND_ROWS
);
我有一个可以工作的盒子:php53, mysql 5.1.54-log - MySQL Community Server (GPL) 我现在安装了一个不起作用的新盒子:php 53, mysql 5.1.44 - Source distribution
在第一个框中,语句的“affected_rows”为 1。在第二个框中,它为 0。
非工作盒的软件信息:
Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1
非工作框的phpinfo(我希望这是足够的细节): mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.44
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
MYSQL_INCLUDE -I/Applications/XAMPP/xamppfiles/include/mysql
MYSQL_LIBS -L/Applications/XAMPP/xamppfiles/lib/mysql -lmysqlclient
Directive Local Value Master Value
mysql.allow_local_infile On On
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket /tmp/mysql.sock /tmp/mysql.sock
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
mysqli
MysqlI Support enabled
Client API library version 5.1.44
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.1.44
MYSQLI_SOCKET /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
工作框的php信息:
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.54
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /usr/local/zend/mysql/tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
Directive Local Value Master Value
mysql.allow_local_infile On On
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket /usr/local/zend/mysql/tmp/mysql.sock /usr/local/zend/mysql/tmp/mysql.sock
mysql.default_user zend zend
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
mysqli
MysqlI Support enabled
Client API library version 5.1.54
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.1.54
MYSQLI_SOCKET /usr/local/zend/mysql/tmp/mysql.sock
Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket /usr/local/zend/mysql/tmp/mysql.sock /usr/local/zend/mysql/tmp/mysql.sock
mysqli.default_user zend zend
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off
任何想法为什么?我在这里敲我的头......这不太可能是两个mysql之间的次要内部版本号差异......
【问题讨论】:
-
应该是
CLIENT_FOUND_ROWS而不是MYSQLI_CLIENT_FOUND_ROWS- 根据dev.mysql.com/doc/refman/5.1/en/information-functions.html - 我没有找到与MYSQLI_CLIENT_FOUND_ROWS相关的任何内容 -
@Fred-ii-,这是 PHP:us1.php.net/mysqli_real_connect
-
谢谢马库斯。我觉得很奇怪,谷歌没有为
MYSQLI_CLIENT_FOUND_ROWS产生任何结果——但是,我没有通过 3 页。如果我花更多的时间,我相信会有结果。 @MarcusAdams - 这个章节的一个额外信息 ;-) -
您使用的是哪个特定版本的 PHP,您使用的是 PHP 提供的 mysqlnd,还是 MySQL 提供的连接库?你可以通过查看phpinfo找到。
-
是的,看起来你是对的,当使用启用了 mysqlnd 的 php 而不是 mysql 本机客户端时,它运行良好。但由于多种原因,我无法重建 PHP。我最终通过 macports (port install php53 php53-mysql) 安装了一个新的 PHP 来解决它。