PHP ile PostgreSQL belirli bir kullanıcı için bir soru oluşturmak için

2 Cevap php

Ben aşağıdaki formu SO gibi benim ana bir URL listesi var

<a href="?questions&questions=777">link1</a>
<a href="?questions&questions=666">link2</a>

Aşağıdaki PHP komut $_GET içinde parametresinde bir sorunu var.

 $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
 // A QUESTION SELECTED BY USER 
 // to generate the answers for the given question 
     $result = pg_prepare($dbconn, "query9", "SELECT title, answer
         FROM answers 
         WHERE questions_question_id = $1;");            // WARNINGS refer HERE
     // TODO I am not sure if the syntax is correct for parametr inside $_GET                             
     $result = pg_execute($dbconn, "query9", array($_GET["'question_id' = $questions_question_id"]));
           // Problem HERE inside the $_GET

Thank you to Nos and Jikhan for solving the problem with $dbconn and to Simon for solving the main problem of this thread!

How can you get only the question_id from the URL such that Postgres understand the query?

2 Cevap

Bu sorun sorgu olmadığı görünüyor ama veritabanı (DBConn) için bağlantı

Sizin $ _GET Açıklamada ayrıca oldukça garip görünüyor. Ben senin bağlantı 'sorular' yinelenen nokta nedir bilmiyorum ama biz varsayalım eğer bağlantılar böylece biçimlendirilir:

<a href="?questions=777">link1</a>

Siz böylece kimliği 777 erişebilirsiniz:

$question_id = $_GET['questions'];

I pg_execute () sadece hazırlamak açıklamada bunları yazmak sırayla değerler dizisini bekliyor inanıyorum. Bu sadece işe yaramaz - Yani değişken $ questions_question_id atamak için denemek gerekmez.

Ben de bu (yani sadece bir kimlik numarası) için beklediğiniz içermesini sağlamak istiyorum.

$question_id = filter_input(INPUT_GET, 'questions', FILTER_SANITIZE_NUMBER_INT);

Fonksiyonların filtre aile PHP 5.2 mevcuttur ve herhangi bir istenmeyen karakterlerin kurtulmak. Bkz http://php.net/manual/en/function.filter-input.php

GET değişkeni ayarlı değilse filter_input () null döndürür.