2015-10-11 4 views
0

Когда я пытаюсь загрузить «id» из URL-адреса, кажется, что он не работает. Почему? Заранее спасибо за помощь!

<?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; 
    } 

} 

?> 
+1

в текущей форме ваш шаг готово совершенно бесполезен. вы должны снова прочитать об использовании параметризованных запросов. Что касается фактической проблемы: переместите th '$ _GET' в конструктор. – Sirko

+0

'НЕТ' [зарезервированное ключевое слово в MySQL] (http://dev.mysql.com/doc/refman/5.5/ru/reserved-words.html), и ему нужно избегать обратных ссылок. –

+0

@juergend «НЕТ» - это ключевое слово, а не зарезервированное слово. Обратите внимание, что рядом с ним нет '(R)'. ;-) –

ответ

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

+0

Его проблема не в PDO. Проблема находится в приватном $ presidentid = $ _GET ['id']; line –

+0

, но как только модификация завершена, мы также изменили сторону PDO. – amehat

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

Заменить выше линии с сильфона линии, она будет работать нормально,

class Poll{ 

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

Я объясню, почему вы не должны использовать как частного $ presidentid = $ _GET ['id']; как только ваша проблема решена.

+0

Он только что вернулся «Примечание: неопределенная переменная: presidentid in ...» – Den

Смежные вопросы