LMLPHP后院

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue

提示 mysql 系列的函数过时的 Deprecated 错误。这个错误最简单的办法就是在报错级别那里屏蔽掉,但是这个不是我的风格,我更希望以更好的方式来解决。但是一上班根本没有时间,写个 MysqlPdo Enhance 的类,按照之前 LMLPHP 中 Mysql 驱动类的风格。为此,写 PDO 操作类的时候还专门定义了接口来约束自己的行为,生怕出问题,测试之后证明,完全兼容之前的 Mysql 类,...

解决PHP PDO limit占位符无效

PHP PDO 方式操作 MySQL 数据库,当占位符在 limit 后时,导致选出的结果不正确。其实最后结果不是预期, 是因为 limit 后面的内容在 PDO 看来认为必须是数字,所以 bindValue 或者 bindParam 必须传入类型参数 PDO::PARAM_INT。 这个坑被前人踩了无数次啦,这个问题有人说算 Bug,最近我还是踩了一次。因为我在 PHP7 和 PHP5 之间经常来回...

解决configure: error: Cannot find OpenSSL's <evp.h>

PHP 的后期新版本由于某些版权问题,不再默认支持 mysql 扩展,官方推荐使用 mysqli 和 pdo_mysql。在使用源代码安装 PHP 时,默认是不会安装 pdo_mysql 扩展的,这样动态编译 mysqlnd、pdo_mysql 扩展会报一些奇怪的错误,如下:configure: error: Cannot find OpenSSL's <evp.h> 尝试了很多方法,依然解决不了这个问...

MySQL update where in 子查询导致锁表

script/job, LmlException: HY000 1205 Lock wait timeout exceeded; try restarting transaction in MysqlPdoEnhance.php:109 Stack trace: #0 MysqlPdoEnhance.php(153): MysqlPdoEnhance->query('UPDATE _s...', Arr...

Debian 10 安装 MySQL Server

assword_require_current: NULL User_attributes: NULL 4 rows in set (0.00 sec) mysql> exit Bye 连接数据库报错PDOException: PDO::__construct(): The server requested authentication method unknown to the client [cac...

PDOException: SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

PDOException: SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'万恶的 MySQL 默认创建的密码为空的 root 账户,这个坑踩了很多次,很容易忽视的一个问题。这种设计的奇特之处在于,这种不需要密码的空账户,使用 mysql 命令登录,不论输入密码与否,不论输入什么密码,都能成功进入数据库。一些其他的语言数据库...

PHP pdo like 操作的一个坑

本来不想发这样的文章,因为这个问题导致我出错了好几次,隔一段时间就错一次。pdo 的占位符会自动的加上引号,所以在写的时候占位符就无需加上引号。不知为何,我在写 like 操作的时候习惯加上引号,导致查询不出结果,而其他的操作不会犯这种错误也许是因为很少手动去写,底层都封装好了。like 操作的通配符不能出现在占位符处,必须在绑定值的时候传递。如:$rs = q('order')->select('di...

Linux Ubuntu 下配置虚拟主机并开启ReWrite教程

granted </Directory> PHP 在使用的过程中,MySQL 的连接支持是必不可少的,在 PHP 较新版本,PHP5.5之后,已经默认不支持 MySQL 模块了,需要使用 MySQLPDO 和 MySQLI 来操作数据库。如果需要使用 MySQL 模块,可能会导致一个 Notice 错误(The mysql extension is deprecated and will be rem...

解决 The mysql extension is deprecated and will be removed in the future

mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ... 。 PHP 核心开发组经过了很长时间的讨论,决定在 PHP5.5 版本后将 mysql_ 系列的函数标记为 deprecated,下面将给出如何解决这个问题的方法。 W...

代码分享解决Laravel中MySQL WhereIn之too many placeholders

MySQL 执行的时候 WhereIn 太多的 ID 参数,导致 PDO 报错。解决方法,分批量执行,然后将结果合并。 下面以 range 函数做了一个简单的例子,计算 1 到 100 的加法。 public function cu(){ $arr = range(1, 100); $cl = function ($part_ids) { return array_sum($part_ids); };...
2021-06-19 08:56:56 1624064216 0.015895