【问题标题】:Why is MYSQLI_CLIENT_FOUND_ROWS ignored?为什么 MYSQLI_CLIENT_FOUND_ROWS 被忽略?
【发布时间】: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 来解决它。

标签: php mysql mysqli


【解决方案1】:

当使用启用了 mysqlnd 的 php 而不是 mysql 本机客户端时,它运行良好。但由于多种原因,我无法重建 PHP。我最终通过 macports (port install php53 php53-mysql) 安装了一个新的 PHP 来解决它。

【讨论】:

    【解决方案2】:

    代替

    MYSQLI_CLIENT_FOUND_ROWS
    

    尝试使用整数

    2
    

    像这样:

    $mysqli->real_connect(
            $this->DB_HOST,
            $this->DB_USERNAME,
            $this->DB_PASSWORD,
            $this->DB_DATABASE,
            3306,
            null,
            2
    );
    

    它为我解决了问题....

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多