我一直收到
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;
引起冲突