我有一大堆奇怪的代码.有时候它有效,有时则不然.服务器有一个绝对古老的PHP副本(5.1.6,五年前,但安全补丁已由Red Hat手动后移).

这是代码,包括我目前在其中的调试行:

// Includes json_print, which does a json_encode, an

// appropriate content-type header, prints it, and exits the script.

include_once('json-functions.php');

$uid = $_POST['uid'];

$salted = false;

if(isset($_POST['salted'])){ $salted = true; }

// No uid given.

if(is_null($uid) || $uid === ''){

$details = array(

'error' => 1,

'errorMessage' => 'No unique ID entered. Please try again.',

);

json_print($details);

}

// Validate uid. Must be 64 digit hexadecimal value.

$pattern = '/^[a-f0-9]{64}$/i';

if(preg_match($pattern, $uid) === 0){

$details = array(

'error' => 2,

'errorMessage' => 'Invalid unique ID.',

);

json_print($details);

}

include_once('../db.php');

header('Content-Type: text/plain');

// Is this salted already?

var_dump($salted);

// What's the UID?

var_dump($uid);

if(!$salted){ $uid = hash('sha256', $salt.$uid); }

// Was the UID salted? (shouldn't be double-salted)

var_dump($uid);

// The query

$SQL = 'SELECT ';

$SQL .= 'p.patronID AS patronID, ';

$SQL .= 'uniqueID, ';

$SQL .= 'status, ';

$SQL .= 'active, ';

$SQL .= 'd.name AS department, ';

$SQL .= 'docdelivery, ';

$SQL .= 'terms, ';

$SQL .= 'copyright, ';

$SQL .= 'lastLogin, ';

$SQL .= 'updated, ';

$SQL .= 'TIMESTAMPDIFF(MINUTE, lastLogin, NOW()) AS recency, ';

$SQL .= 'DATEDIFF(NOW(), updated) AS stale, ';

$SQL .= 'AES_DECRYPT(first, ?) AS first, ';

$SQL .= 'AES_DECRYPT(last, ?) AS last, ';

$SQL .= 'AES_DECRYPT(barcode, ?) AS barcode, ';

$SQL .= 'INET_NTOA(AES_DECRYPT(ip, ?)) AS ip, ';

$SQL .= 'AES_DECRYPT(email, ?) AS email, ';

$SQL .= 'AES_DECRYPT(phone, ?) AS phone, ';

$SQL .= 'AES_DECRYPT(address1, ?) AS address1, ';

$SQL .= 'AES_DECRYPT(address2, ?) AS address2, ';

$SQL .= 'AES_DECRYPT(city, ?) AS city, ';

$SQL .= 'AES_DECRYPT(state, ?) AS state, ';

$SQL .= 'AES_DECRYPT(zip, ?) AS zip ';

$SQL .= 'FROM patrons p, departments d ';

$SQL .= 'WHERE department = d.deptID ';

$SQL .= 'AND uniqueID = ?';

$query = $DB->prepare($SQL);

$p = array(

$key,

$key,

$key,

$key,

$key,

$key,

$key,

$key,

$key,

$key,

$key,

$uid,

);

$query->execute($p);

$result = $query->fetch();

// dump the results

var_dump($result);

print "

";

// And any error info

var_dump($DB->errorInfo());

exit;

以下是正常工作时的示例输出:

// Salted is true

bool(true)

// UID is:

string(64) "52223d99e1db275716028cf6fd4f58895b1df7eb8e061cefab346b8ce3cf4ff4"

// It was not double-salted:

string(64) "52223d99e1db275716028cf6fd4f58895b1df7eb8e061cefab346b8ce3cf4ff4"

// Results were:

array(46) {

["patronID"]=>

string(1) "126"

[0]=>

string(1) "126"

["uniqueID"]=>

string(64) "52223d99e1db275716028cf6fd4f58895b1df7eb8e061cefab346b8ce3cf4ff4"

[1]=>

string(64) "52223d99e1db275716028cf6fd4f58895b1df7eb8e061cefab346b8ce3cf4ff4"

["status"]=>

string(1) "4"

[2]=>

string(1) "4"

["active"]=>

string(1) "1"

[3]=>

string(1) "1"

*** snip! ***

[21]=>

string(2) "TX"

["zip"]=>

string(5) "78623"

[22]=>

string(5) "78623"

}

// Errors reported?

array(1) {

[0]=>

string(5) "00000"

}

以下是失败时的示例输出:

// Salted is true

bool(true)

// UID is:

string(64) "1d6fa3b897b07301a836f5441d23f60e7cb4b52a00ee6d20648fe51b01c769bf"

// It was not double salted

string(64) "1d6fa3b897b07301a836f5441d23f60e7cb4b52a00ee6d20648fe51b01c769bf"

// Results were:

bool(false)

// Error code was:

array(1) {

[0]=>

string(5) "00000"

}

我无法弄清楚为什么它适用于某些uids,但不适用于其他人.此外,在第二个示例中,结果集出现FALSE,但数据库报告错误00000,这意味着“没有错误”.我已经检查过查询是否正在准备好,在两种情况下都是如此.

我在这里错过了什么?

php mysql pdo出错_PHP / MySQL / PDO – 结果为false但没有DB错误消...相关推荐

  1. mysql unrecognized_service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误...

    service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [root@ctohome.com ~]# service ...

  2. pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法

    当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_ ...

  3. mysql int 判断_PHP通过PDO查MySQL查询int字段返回string类型,解决方案

    虽说PHP是弱类型的语言,但不代表没类型,乱转也是个问题,因为要进行数据比较,判断,还要和其它语言数据交互.这个问题一定要解决的.但网上的标准答案似乎没提驱动问题,此文结合作者经验详细说明. 1.PD ...

  4. pdo mysql 绑定查询_php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 php mysql PDO 查询操作的实例详解 这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需 ...

  5. php mysql事务实例_PHP + MySQL事务示例

    PHP + MySQL事务示例 我真的没有找到正在使用MySQL事务的PHP文件的正常示例. 你能告诉我一个简单的例子吗? 还有一个问题. 我已经做了很多编程,但没有使用交易. 我可以在header. ...

  6. php mysql 读取数据_PHP MySQL 读取数据

    全屏 PHP MySQL 读取数据 从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据:SELECT column_name(s) FROM table_name 我们可以使用 ...

  7. php与mysql权威指南_PHP+MySQL全能权威指南

    <PHP+MySQL全能权威指南> 第1篇PHP动态网站和PHP程序语言基础入门篇 第1章准备基础知识.开发环境及配置运行环境 1.1正确认识PHP动态网站开发 1.2安装和配置PHP动态 ...

  8. php mysql 日期时间_php Mysql日期和时间函数集合

    收集的比较全的Mysql日期和mysql时间函数 DATE_FORMAT(date,format) 根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(J ...

  9. pdo插入mysql数据出错_php中通过pdo插入数据时,sql语句错误?

    再次先谢谢各位大佬!! 接下来直接看代码: include 'mysql_ini.php'; $sql_select = "select * from word where word = ? ...

最新文章

  1. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers
  2. Android开发小问题集
  3. CSS选择器学习笔记
  4. Linux内核的Softirq机制
  5. java--线程安全
  6. PHP环境 PDOException PDOException: could not find driver
  7. Python调用C语言函数
  8. 保护私有信息的叉积协议及其应用 in c
  9. 绘制Linux/Android设备的内存动态变化趋势图
  10. 网页版模仿Excel
  11. 计算机考试模拟软件双击为什么打不开,win7系统双击“计算机”打不开的解决方法...
  12. raid数据恢复案例之:服务器Raid5磁盘阵列数据恢复过程
  13. 百度与谷歌地图坐标转换
  14. Pytorch——报错解决:匈牙利匹配
  15. javascript 中Object.entries
  16. Python制作回合制手游外挂简单教程(中)
  17. 内网渗透 | FRP代理工具详解
  18. Java,该学什么?
  19. 【计算机网络(谢希仁第八版)】第二章课后答案及复习
  20. 物联网开放平台全面赋能生态伙伴,电信“天翼物联开发者大赛”技术沙龙北京站如期举行...

热门文章

  1. Android编程之SparseArrayE详解 Android编程之SparseArrayE详解
  2. (libgdx学习)TextInputListener
  3. 如何导进开源库StickyListHeaders
  4. ERP项目实施记录02
  5. struts读常量顺序
  6. B - Cube HDU - 1220 (数学计数)
  7. Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序
  8. Mysql多实例实施文档
  9. java基础学习之对象转型
  10. C++中 栈的简单封装