【问题标题】:Parse error: syntax error, unexpected '$_GET' (T_VARIABLE) in解析错误:语法错误,意外的 '$_GET' (T_VARIABLE) 在
【发布时间】:2015-10-11 09:49:23
【问题描述】:

当我尝试从 URL 加载“id”时,它似乎不起作用。有什么理由吗?提前感谢您的帮助!

<?php

class Poll{

    private $db;
    private $presidentid = $_GET['id'];

    public function __construct($db){
        $this->db = $db;
    }

    public function getPollData(){
        $sql = "SELECT poll_question, yes, no FROM poll WHERE poll_id = $presidentid";
        $statement = $this->db->prepare($sql);
        $statement->execute();
        $pollData = $statement->fetchObject();
        return $pollData;
    }

}

?>

【问题讨论】:

  • 在当前形式中,您的准备步骤完全没用。您应该再次阅读有关使用参数化查询的信息。至于实际问题:将$_GET赋值移到构造函数中。
  • NO 是一个reserved keyword in MySQL,需要用反引号转义。
  • @juergend "NO" 是关键字而不是保留字。请注意,它旁边没有(R)。 ;-)
  • @Fred-ii-:我从未注意到 (R)。谢谢。
  • @juergend 不客气。

标签: php mysql sql pdo get


【解决方案1】:

我们不会将变量放在准备好的查询中。

$sql = "SELECT poll_question, yes, no FROM poll WHERE poll_id = :id";

$statement = $this->db->prepare($sql);
$statement->bindParam(':id', $this->presidentid);
$statement->execute();

见:http://php.net/manual/fr/pdo.prepare.php

【讨论】:

  • 它的问题不在PDO。问题在私人 $presidentid = $_GET['id'];行
  • 一共,但是一旦修改完成,我们也改变了PDO方。
【解决方案2】:
private $presidentid = $_GET['id'];

用下面的线代替上面的线,它会正常工作,

class Poll{

    private $db;
    private $presidentid;
    public function __construct($db){
            $this->db = $db;
            $this->presidentid = $_GET['id'];
        }

我会解释,为什么你不应该使用 private $presidentid = $_GET['id']; 一旦你的问题解决了。

【讨论】:

  • 它刚刚返回“注意:未定义变量:presidentid in...”
猜你喜欢
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
相关资源
最近更新 更多