我正在在线迁移我的本地文件,并且我的 db 脚本存在 PHP 问题。在本地工作正常(运行 PHP 5.3.8)但在我的服务器上出现以下错误(PHP 5.3.10)
没有 $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
致命错误:在第 108 行的 /.../...php 中的非对象上调用成员函数 setFetchMode()
使用 $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
SQLSTATE [42000]:语法错误或访问冲突:1142 SELECT 命令拒绝用户 '...'@'205.186.180.26' 用于表 '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 实现有关。我怎样才能摆脱这个错误?我是否以一种搞砸了的奇怪方式准备/执行声明?谢谢你的帮助