【问题标题】:SELECT on MySQL doesn't work on my PHP script but with phpmyadminMySQL 上的 SELECT 不适用于我的 PHP 脚本,但适用于 phpmyadmin
【发布时间】:2018-06-28 08:51:59
【问题描述】:

我有一个带有 VARBINARY 257 的 MySQL 表来存储加密密码。我必须定期更新记录。在进行 REPLACE INTO 之前,我想使用我拥有的所有值创建一个 SELECT。如果我找到记录,则不需要 REPLACE。这是因为我有一个带有“on update CURRENT_TIMESTAMP”属性的时间戳列来存储上次修改时间。它在没有密码的情况下运行良好,但即使所有值都相同,SELECT 也不起作用。如果我在 phpmyadmin 上使用相同的 SELECT,它可以工作。我有一个函数可以读取我尝试过 mysqli 函数和 PDO 类的记录:

mysqli:

function getMySQL($query, $pwd) {
    $link = mysqli_connect("localhost", "decisionrule", $pwd, "gateways");
    if (mysqli_connect_errno())
        return array(array('Connection error : '.mysqli_connect_error()));
    $result = mysqli_query($link, $query);
    $res = array();
    for ($i=0; $row = mysqli_fetch_array($result, MYSQLI_ASSOC); $i++)
        $res[$i] = $row;
    mysqli_free_result($result);
    mysqli_close($link);
    return $res;
}

PDO:

function getMySQL($query, $pwd) {
    try {
        $bdd = new PDO('mysql:host=localhost;dbname=gateways', "decisionrule", $pwd);
    }
    catch(Exception $e) {
        die('Erreur : '.$e->getMessage()."\n");
    }
    $res = array();
    $response = $bdd->query($query);
    while ($donnees = $response->fetch())
        $res[] = $donnees;
    $response->closeCursor();
    return $res;
}

为我的问题返回一个空数组。

SELECT 示例:

SELECT name FROM partenaires WHERE gateway='GTWEIR01' AND name='ACCOLADE' AND proto_ident='ACCOLADE' AND protocol='SFTP' AND comments='ACCOLADE - SA0000026603841' AND login_ident='cofidisacco' AND login_password=0x014f4593f6e4360b4c4905da27e3a912e9e8f641ca96557ef1a7e7c10f44273d56c661107d1983d47a9f822e2e419c295b791dd4aed54fe57a4bcd44130f475c4673ec14d044ce208e84bd6a447161874746567e5446388883bbe3a3b8ddb75155488e8290fc5850cfcd776edf9994819e85d1fcec8b4ba3e02c2081a440172b AND dest_address='90.83.11.173/22' AND org_address='' AND dest_address_1='41.87.153.85/22' AND org_address_1='' AND dest_address_2='' AND org_address_2='' AND dest_address_3='' AND org_address_3=''

SELECT 的大小限制是否可以更改,因为它适用于 phpmyadmin ?

版本:

RedHat 6
PHP 5.3.3
Apache 2.2.15
MySQL 5.1.73

谢谢

【问题讨论】:

  • 好吧,如果您在触发查询后添加了一些错误处理,那么您也许会知道出了什么问题,并且不会陷入这样的困境。
  • 在引号中输入 login_password ' '
  • @Shadow 我已经尝试使用 mysqli 并测试了 $result。这绝不是假的。
  • @Leet 我试过用引号。这并没有更好,也没有解释为什么它可以与 phpmyadmin 一起使用。
  • max_allowed_pa​​cket 设置为 1MB 所以看起来这不是查询大小限制问题

标签: php mysql select


【解决方案1】:

我已经搜索了很长时间,超过一整天,但没有找出问题所在。它是如此简单。我正在使用 RSA 公钥来加密密码,即使密码没有更改,加密每次都会产生另一个结果。所以我的 SELECT 不能成功。

我必须为浪费您宝贵的时间而道歉。

特别感谢 Shadow 和 Leet Hudka。

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多