php - 使用 PDO 的语法错误或访问冲突

标签 php pdo

我正在在线迁移我的本地文件,但我的数据库脚本存在 PHP 问题。在本地运行良好(运行 PHP 5.3.8)但在我的服务器(PHP 5.3.10)上出现以下错误

没有 $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Fatal error: Call to a member function setFetchMode() on a non-object in /.../...php on line 108

用$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user '...'@'205.186.180.26' for table 'invited'

这是我的代码:

class guest {
    public $id;
    public $guest_name;
    public $url_phrase;
}

$guest = new guest;

if (isset($_GET['p'])) {
    $url_phrase = urldecode($_GET['p']); 
} else if (isset($_POST['p'])) {
    $url_phrase = urldecode($_POST['p']); 
}

if (isset($url_phrase)) {

    try {

    $DBH = new PDO("mysql:host=myhost.com;dbname=mydbname", "myusername", "mypassword");
    $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    $url_phrase = $DBH->quote($url_phrase);
    $sql = "SELECT id, guest_name, url_phrase FROM mydbname.invited WHERE url_phrase = $url_phrase";

    $stmt = $DBH->query($sql);
    $stmt->setFetchMode(PDO::FETCH_INTO, new guest);

    $guestNumber = $stmt->rowCount();

    if($guestNumber > 0) {
        etc...  
    }
    if($guestType == "solo") {
        foreach($stmt as $guest) {
            $name = $guest->guest_name;
            etc...  
        }
    }
} else {
    other stuff.. etc..
    $DBH = null;
} catch (PDOException $e) {
    echo $e->getMessage();
}
}

作为该用户,我已经获得了可以正常工作的简单选择语句(我不认为它与权限相关),我的问题似乎与我的 PDO 实现有关。我怎样才能摆脱这个错误?我是否以一种奇怪的方式准备/执行了声明,这把事情搞砸了?感谢您的帮助

最佳答案

我遇到了同样的问题。在我将我的代码从本地上传到生产服务器后,用户拥有所有权限。问题是数据库名称——在我的本地环境中它类似于 dattabase1,而在生产环境中名称不同...prefix_ddatabas1。我将数据库的名称更改为正确的名称,一切正常。

关于php - 使用 PDO 的语法错误或访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403978/

相关文章:

PHP PDO 连接效率

php - onclick li 提交表单并发布 li 的 data-id

php - 在 PHP 中包含太多文件会降低性能吗?

php - 向 pgSQL 表添加权限问题

php - 我的 PDO 声明不起作用

php - 从 Mysql 转移到 PDO

php - msqli 不插入

php - 将 js 数组传递给 PHP

javascript - 如何在jquery中插入php脚本?

mysql - 使用数组作为 PDO "IN"查询的一部分时遇到困难