草庐IT

php - 使用 MySQL 调试 PDO 准备的查询

这个问题在这里已经有了答案:WhydoesthisPDOstatementsilentlyfail?(1个回答)关闭3年前。我正在从mysql_*调用更改为使用PDO调用,但在开发新代码时我无法弄清楚如何调试我的实际SQL。在mysql_*调用下,我可以在PHP函数中编写一些SQL,并且可以echo实际的SQL以查看处理器正在处理什么。我没能在PDO库中找到这样的野兽。debugDumpParams看起来应该如此,但它不会返回绑定(bind)语句。我遇到的问题举例:在我的第一次尝试中,我绑定(bind)了一个字符串并在SQL语句中包含了引号,尽管绑定(bind)了一个data_type

php - 当我从缓存中获取时,fetch 只返回一行

我正在尝试采用缓存类在我的网页上使用。简单的逻辑是这样的:尝试从缓存中获取数据:如果没有:运行查询并将其设置为缓存。如果有:显示缓存中的数据。我的代码get("cachethis");if($r==null){echo"THISTIMERUNWITHOUTCACHE";$time_start=microtime(true);$query=$handler->query("SELECT*FROMmembers");while($r=$query->fetch(PDO::FETCH_ASSOC)){//echoecho"$r[id]";//letscachequeryabove.$cach

PHP PDO MySQL 重复键更新多行和值

我有以下PDO查询,但不知何故无法使ONDUPLICATE部分工作。Slug是唯一键。$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);$statement=$db->prepare("INSERTINTOplugins(name,slug,version,author,author_profile,rating,num_ratings,active_installs,downloaded,last_updated

使用 SSL 的 PHP Mysql 连接无法正常工作 PDO

Mysql服务器运行的是php5.3。新的网络服务器正在运行php7.1(从php5.3迁移而来)。当我尝试使用ssl连接Mysql服务器时,它不起作用。try{$dbh=newPDO($dsn,$user,$password,array(PDO::MYSQL_ATTR_SSL_KEY=>'/etc/mysql/client-key.pem',PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/client-cert.pem',PDO::MYSQL_ATTR_SSL_CA=>'/etc/mysql/ca-cert.pem'));echo"Connestiones

MySQL DATE_FORMAT 反转?

我正在使用MySQLDATE_FORMAT函数以我需要的格式获取日期,如下所示:SELECTDATE_FORMAT(`dob`,'%m-%d-%Y')asdobFROM`tblUsersProfile`WHERE`user_id`=1但现在我想将日期从这种格式更新为默认的mysql日期格式?我知道如何在php中执行此操作,但我正在尝试更改MySQL中的格式。有人知道吗? 最佳答案 你想要MySQL'sSTR_TO_DATE()function:UPDATEtblUsersProfileSET`dob`=STR_TO_DATE('1-

php - PDO 更新不替换准备好的语句中的占位符

我正在尝试使用以下代码更新表格。如果我更改WHEREtemp_booking_id=':temp_booking_id'");以使用实际的当前sessiontemp_id,查询将运行,但将占位符添加到表中(例如:check-out)作为值。$data保存了正确的值,但没有替换占位符。我盯着这个看了好几个小时,但终究无法找出问题所在,环顾四周,但没有找到解决方案。PDOStatement:errorInfo()正在返回PDOStatement::errorInfo():Array([0]=>00000)如果我删除占位符周围的引号,它会返回PDOStatement::errorInfo()

mysql永久准备语句

我希望在高流量站点上使用准备好的语句来加速一些查询。我认为我没有正确理解的是使用准备好的语句的好处,除非它们可以通过多个连接保持准备状态。看起来这对于也不允许持久连接的PDO是不可能的。但持久连接功能不允许PDO。为了论证,假设我每秒运行5,000次查询:SELECT*FROMsome_tableWHEREsome_columnLIKE'some_value'据我了解,如果我每次需要查询时更改“some_value”,PDO将阻止mysql重新编译和评估查询。我也明白“some_value”可以用二进制而不是ASCII来传输以节省带宽,但如果我每次打开连接时都必须发送整个查询,它不会节

php - 将 LIKE 运算符与 % 一起用于 PDO 准备语句的关键字搜索

我正在尝试使用PDO准备语句编写关键字搜索。理想情况下,我想使用LIKE运算符来搜索字段值内的子字符串。这是我的代码:$statement=$this->db->prepare("select*fromwhateverwheretitlelike?orauthorlike?");$statement->execute(array("%$titleKeyword%","%$authorKeyword%"));$rows=$statement->fetchAll(PDO::FETCH_ASSOC);不幸的是,当我尝试这个时,$rows总是空的。但是,如果我将SQL复制到phpMyAdmin

php - Joomla 3.1 : accessing database from an external PHP

我有一个外部PHP脚本,我正在使用PDO进行查询:try{$dbh=newPDO("mysql:host=$hostname;dbname=$db",$username,$password);$sql="SELECT*FROM$tableWHEREuserName=:userName";$stmt=$dbh->prepare($sql);$stmt->bindParam(':userName',$userName);$stmt->execute();$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);$dbh=null;}catch(PDOException

php - 是否在 Yii 中使用 "emulatePrepare"?

我从手册/演示应用程序/其他任何地方复制了Yii数据库连接的未修改(我认为)代码。而且,如果我没记错的话,它默认设置了'emulatePrepare'=>TRUE。然后我找到this和thisanswer和更多消息来源,似乎都在声称,使用模拟准备是错误的想法。它是旧版本RDBMS(尤其是我的MySQL)的某种遗留物,不应在现代版本的MySQL/PHP上使用。有人可以证实吗?我们应该在Yii应用中使用'emulatePrepare'=>FALSE吗? 最佳答案 您链接到的两个答案都是毫无意义和主观的。他们未能提供避免模拟模式的特定理由