PDO给出Mysql错误1146

时间:2013-01-20 08:24:30

标签: php mysql pdo mysql-error-1146

    $deleteID = $_POST['oz'];
    if(!$deleteID){
        echo '2';
        die;    
    } else {
        //It should be working.
    }
    $checkVar = $pdo->prepare("SELECT * FROM `user_posts` WHERE `id`=:delete");
    $checkVar->bindValue(':delete',$deleteID,PDO::PARAM_STR);
    if($checkVar->execute() == false){
        echo '2';
        die;
    }

我真的很生气。提供$ deleteID,没有任何绑定。为什么不,请有人帮忙。

2 个答案:

答案 0 :(得分:4)

  1. 让PDO在出错时抛出异常,
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    连接后。
  2. 确保您可以在日志或屏幕上看到发生的错误。
  3. 运行您在此处发布的代码其他一些代码。与其他代码一样,可能存在其他错误,与您的绑定问题无关。
  4. 对于Table doesn't exist问题,您必须检查错误,例如拼写错误,字母大小写,错误的服务器连接,错误的PHP文件编辑等等。说,您正在针对localhost运行PHPMyAdmin而实际脚本针对远程主机或某些东西那种。

答案 1 :(得分:2)

如果表示该表不存在,则该表不存在。

您要么连接到错误的服务器,选择错误的数据库,要么遇到案例问题。

http://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html

  

[..]因此,底层操作系统的区分大小写在数据库,表和触发器名称的区分大小写中起作用。这意味着这些名称在Windows中不区分大小写,但在大多数Unix中都区分大小写。

确保您连接到当前正在查看的同一数据库和服务器

print_r( $pdo );

这不是授权问题。

还有一条建议。如果你很生气,请休息一下,喝一杯茶,冷静下来,然后阅读“你的常识”优秀答案并再次注意你的代码:)