【问题标题】:Is there really an error, or does my server not support PDO?真的有错误,还是我的服务器不支持 PDO?
【发布时间】:2012-10-04 00:53:41
【问题描述】:

我被告知我已从 mySQL 更改为 PDO 调用,但我似乎无法通过访问实际数据库,如下所示

$db = new PDO("mysql:host=localhost;dbname=info;charset=UTF-8", 'admin', 'xxxxxx');

当它返回时

Parse error: syntax error, unexpected T_VARIABLE in db.php on line 8

我已经通过论坛进行了检查,从我读到的内容来看,服务器确实支持 PDO,此外,phpinfo() 出于安全原因被禁用,所以我无法求助,我实际上是在字符串中出错还是确实出错了这意味着我的服务器还不支持 PDO?

【问题讨论】:

  • 可能是一个愚蠢的问题,但 admin 是一个变量吗?因为如果不是,它们应该是字符串,如果是,它们应该是 $。
  • admin 是实际的用户名,在引号中我得到同样的错误
  • 尝试重写整行。只需从头开始仔细再次键入并完全删除旧行。
  • 再次阅读错误信息。它说第 8 行的变量是意外的。这意味着该行之前的某些内容是错误的。更新您的问题并同时显示第 1 到第 8 行。
  • 我按照@budwiser 所说的进行重写并且它正在工作:/

标签: php mysql pdo


【解决方案1】:

您可能想尝试从头开始重写有问题的行并完全删除旧行。我遇到了几个问题,我面临unexpected T_VARIABLE - 没有明显原因的错误。我认为这是因为我设法在笔记本电脑的键盘上使用了某种组合键,这导致一些不可见的字符出现在我的代码中。

改写一行后,问题通常就没有了。

【讨论】:

    【解决方案2】:

    最后两个参数应该用单引号封装起来,或者本身就是变量。即 (new PDO("stuffhere", $user, $pass)

    编辑 试试这个:How to check if PDO support is enabled in my Apache Installation?

    if (!defined('PDO::ATTR_DRIVER_NAME')) {
        echo 'PDO unavailable';
    }
    elseif (defined('PDO::ATTR_DRIVER_NAME')) {
        echo 'PDO available';
    }
    

    【讨论】:

    • 是的,当使用 mysql_* 函数时它们工作正常 :) 但我被告知不要使用它
    • 是的,你应该试试我上面编辑的代码。这将检查环境并确保您可以使用 PDO。
    • 我认为你提供的代码不是很好,因为它返回 PDO 不可用,我现在已经解决了这个问题,它可以正常工作
    • 那太糟糕了。很高兴你把它修好了。
    【解决方案3】:

    为了更好地了解行的哪一部分有错误,您可以将其拆分为多行。例如

     8. $db = new PDO("mysql:host=localhost;dbname=info;charset=UTF-8", 'admin', 'xxxxxx');
    

    可以改为:

     8. $db = new PDO(
     9. "mysql:host=localhost;dbname=info;charset=UTF-8",
    10. 'admin',
    11. 'xxxxxx');
    

    现在报告错误的行可能是 8、9、10 或 11,你会更准确地知道哪里出了问题。

    【讨论】:

    • 8.$dty = 9.new PDO( 10."mysql:host=localhost;dbname=info", 11.'admin', 12.'xxxx' ); 仍然给我同样的错误:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2015-09-22
    • 2017-10-28
    相关资源
    最近更新 更多