2013-11-08 5 views
0

Я супер новичок в php, поэтому мне нужна помощь. У меня чертовски время ... и я знаю, что это просто!PHP/SQL/Json Parse

У меня есть PHP файл здесь: http://theclackamasprint.net/json.php

Это вытягивать информацию из MySQL в JSON.

Я хочу разбор URL, чтобы отделить статьи их CatID (не показано)

, поэтому я хочу, чтобы иметь возможность ввести http://theclackamasprint.net/json.php?catid=84 http://theclackamasprint.net/json.php?catid=87

и т.д ... и есть только тот CatID шоу

Вот мой код:

$host = "******"; 
$db = "******"; 
$user = "******"; 
$pass = "******"; 

$connection = mysql_connect($host, $user, $pass); 

//Check to see if we can connect to the server 
if(!$connection) 
{ 
    die("Database server connection failed."); 
} 
else 
{ 
    //Attempt to select the database 
    $dbconnect = mysql_select_db($db, $connection); 

    //Check to see if we could select the database 
    if(!$dbconnect) 
    { 
     die("Unable to connect to the specified database!"); 
    } 
    else 
    { 
     $query = "SELECT title FROM tcp_content WHERE catid=84 ORDER BY publish_up DESC LIMIT 20"; 
     $resultset = mysql_query($query, $connection); 

     $records = array(); 

     //Loop through all our records and add them to our array 
     while($r = mysql_fetch_assoc($resultset)) 
     { 
      $records[] = $r;   
     } 

     //Output the data as JSON 
     echo json_encode($records); 
    } 


} 
+0

Извините за звучание как сломанную запись, но поскольку вы новичок в PHP, вам действительно не следует изучать/использовать вызовы базы данных mysql_ *. Они [устарели] (http://php.net/manual/en/function.mysql-query.php) и могут быть удалены из новых версий PHP. 'mysqli_ *' и 'PDO' (например) - это современные способы доступа к MySQL с PHP. –

ответ

-1

кратчайший решение включает в себя изменение catid=84 до catid=" . $_GET['catid'] . ", тем самым подключая параметр catid в ваш запрос MySQL.

Полученная линия будет выглядеть

$query = "SELECT title FROM tcp_content WHERE catid=" . $_GET['catid'] . " ORDER BY publish_up DESC LIMIT 20"; 

ОДНАКО это уязвимо для SQL инъекций, так что, если это для любой серьезной работы, обязательно переключиться в режим mysqli_query() или PDO::query().

+0

Я не нахожу «это то, как вы это делаете, но это совершенно небезопасно, поэтому не делайте этого», чтобы быть очень хорошим ответом. По крайней мере, используйте ['mysql_real_escape_string'] (http://php.net/manual/en/function.mysql-real-escape-string.php). –

+0

спасибо! это сработало ... Я сделаю это изменение. Я ценю это. – Insanim8er

+0

@JoachimIsaksson Учитывая, что это веб-сайт Q & A, это не ответ, отвечающий за пропаганду лучших практик и тому подобное. «Очень хороший ответ» может варьироваться от использования mysqli/PDO (как вы рекомендовали), до выделенного ORM, к автономной веб-среде, которая полностью обрабатывает запросы. Этот ответ является * самым коротким * решением. – Brian

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