PDO wordpress query


PDO wordpress query

我一直收到

ERROR: SQLSTATE[42000]: Syntax ERROR or access violation: 1064有一个错误在你的SQL语法;查看对应的手册在

附近使用正确语法的MySQL服务器版本

请帮忙!=)我已经检查了phpmyadmin中的这个文字查询是否有效。

SELECT * 
FROM  `wp_customgravityall` 
WHERE  (`time` >= '2015-09-01 00:00:00' AND `time` <= '2015-09-13 23:59:59')
ORDER BY  `wp_customgravityall`.`time` DESC

但是下面的代码不起作用

<?php
$servername = "http://www.myhomepagenamethingy.com/";
$username = DB_USER;
$password = DB_PASSWORD;
$dbname = DB_NAME;
$table_name = 'wp_' . 'customgravityall';
$from_date  = isset( $_GET['from_date'] )   ? $_GET['from_date'] . " " . "00:00:00" : '';
$to_date    = isset( $_GET['to_date'] )     ? $_GET['from_date'] . " " . "23:59:59" : '';

try {
    $conn = new PDO('mysql:$servername;dbname=$dbname', $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $statement = $conn->prepare(
        "SELECT * 
        FROM ? 
        WHERE `time` >= ? AND `time` <= ?
        ORDER BY `wp_customgravityall`.`time` DESC"
    );
    $statement->bindValue(1, $conn->quote($table_name), PDO::PARAM_STR);
    $statement->bindValue(2, $conn->quote($from_date), PDO::PARAM_STR);
    $statement->bindValue(3, $conn->quote($to_date), PDO::PARAM_STR);
    var_dump($statement);
    $statement->execute();
} catch(PDOException $e) {
    echo 'PDO ERROR: ' . $e->getMessage();
}
?>

您正在尝试将表与FROM ?绑定

预处理语句中的规则是不能绑定表/列。

您可以选择表名,为表名分配变量,或者使用安全列表。

为变量设置表名的示例:

$table = "table_name";
然后

SELECT FROM $table
如果您的表包含MySQL会抱怨的字符(如空格或连字符),则

或在表名周围加上勾号:

SELECT FROM `$table`

在您的示例中,要使用的变量是$table_name

  • 你需要相应地调整你的绑定。

我发现的另一件事是你在这里使用了单引号:

$conn = new PDO('mysql:$servername;dbname=$dbname', $username, $password);

变量不被单引号解析(除非连接),使用双引号:

$conn = new PDO("mysql:$servername;dbname=$dbname", $username, $password);

然而,你的结构似乎不正常,所以你"可能"不得不调整它。

  • http://php.net/manual/en/pdo.connections.php

手册中的例子:

$dbh = new PDO("mysql:host=localhost;dbname=test", $user, $pass);

然而,我可能是错的,因为我相信有一些方法可以与PDO建立连接。

因此改成:

$dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

另外,确保那些常量已经被正确赋值。

这些被认为是常量而不是字符串:

$username = DB_USER;
$password = DB_PASSWORD;
$dbname = DB_NAME;

如果这些不是预定义的常量,则需要用引号括起来:

$username = "DB_USER";
$password = "DB_PASSWORD";
$dbname = "DB_NAME";
然后

:

$servername = "http://www.myhomepagenamethingy.com/";

这应该更可能是localhost设置在引号,或IP地址取决于你的系统是如何设置的,是通常的设置,而不是一个URL。如果我在我的回答中已经给你的答案不适合你,你需要找出你的主机设置是什么。

我的解决方案发现:

找到的解决方案是更改连接cms与数据库的文件中的用户名和密码,我看到突然它可以是用户名,有一个点或相同的域名。

PROCESS STEPS OF to UP to FIND CONCLUSION

在Wordpress中,我遇到了mysqli和PDO之间的问题。我用yum update &Yum升级,没有centos,他给了我以下更新:

================================================== 
   ==============================
 Package Arch Version Repository Size
 ==================================================                             
==============================     
Installing:
 lsphp73-mysqlnd x86_64 7.3.15-1.el7 litespeed 132k

替换lsphp73- mysqld。x86_64 7.3.14-1.el7更新:lsphp73 x86_64 7.3.15-1。el7运行速度5.0 MLsphp73-bcmath x86_64 7.3.15-1。El7速度27klsphp73-common x86_64 7.3.15-1。El7的转速为650 klsphp73-gd x86_64 7.3.15-1。El7的速度为114klsphp73-imap x86_64 7.3.15-1。El7的速度为32klsphp73-mbstring x86_64 7.3.15-1。El7的运行速度为559klsphp73-opcache x86_64 7.3.15-1。El7车速191公里lsphp73-pdo x86_64 7.3.15-1。El7的速度为67 klsphp73-process x86_64 7.3.15-1。El7速度29klsphp73-soap x86_64 7.3.15-1。El7的运行速度为120klsphp73-xml x86_64 7.3.15-1。El7运行速度126kopenlitespepex86_64 1.6.9-1。el7转速37 M

事务概要================================================== ==============================安装1包升级12个包

总下载大小:44 M下载包:没有Presto元数据可用


Total 13 MB/s | 44 MB 00:03

除了那个矿井fastcgi_pass unix:/var/php-nginx/15822663384347.sock/socket;

引起冲突