2014-10-15 5 views
-3

Я пишу PHP-скрипт, в котором мне нужно запустить MySQL-запрос. Я открыл соединение для передачи данных, и все такие любезности работают нормально. Мое единственное сомнение касается синтаксиса следующего запроса, так как он не работает. У меня есть переменная php $ post_id, которую я выбираю из базы данных.Переменные в запросе Mysql

$query1="SELECT needer FROM needer_blood WHERE value_id='$post_id'"; 

$result=mysql_query($query); 

$req_id=$result[0]; 
+1

Вы не получаете результат, например, [mysqli_fetch_object] (http://php.net/mysqli_fetch_object). FYI: функции 'mysql_' устарели. –

+0

Не используйте $ post_id непосредственно в запросе, используйте SQL-инъекцию. – Zeeshan

+1

@ Zeeshan, я думаю, вы имели в виду «** это ** sql injection» ... :) – webeno

ответ

0

Вы не получаете результат.

Так что попробуйте это

<?php 

$query1="SELECT needer FROM needer_blood WHERE value_id='$post_id'"; 

$result=mysql_query($query); 

while($row= mysql_fetch_array($result)) 
{ 
    echo $row['needer'];//You can display your result like this. 
} 

Также MySQL является depricated узнать Mysqli или PDO.

Для функции Mysqli проверить эту ссылку http://php.net/manual/en/book.mysqli.php

Для PDO функции проверки ссылку http://php.net/manual/en/book.pdo.php

+0

Спасибо, друг. Я имею в виду синтаксис «SELECT needer FROM needer_blood WHERE value_id = '$ post_id'"; является правильным. не так ли? с переменной $ post_id. –

0

попробовать это, его лучший подход, если пользователь SQL INJECTION

<?php 

$query1="SELECT needer FROM needer_blood WHERE value_id='".mysql_real_escape_string($post_id)."'"; 

$result=mysql_query($query) or die(mysql_error()); // die only used in development , remove when you live this 

$data = mysql_fetch_array($result) or die(mysql_error()); 

echo $req_id = $data['needer']; // $req_id = $data[0]; 

?> 
+0

Спасибо. Оно работает. –

+0

@AshifShereef, если он работает, тогда примите это. – Zeeshan

0

Во-первых, обратите внимание, что ваш запрос переменная называется $ query1, а ваша mysql_query использует переменную $ query (variable mismatch?).

Вы можете использовать mysql_fetch_assoc() для получения ассоциативного массива из вашего запроса.

Использование следующего кода должно работать, хотя вы должны сделать некоторую проверку, чтобы убедиться, что существует $ result [0].

// Query String 
$query1="SELECT needer FROM needer_blood WHERE value_id='$post_id'"; 
// Run the query 
$result=mysql_query($query1) or die(mysql_error()); 
// Fetch Associative Array 
$rows=mysql_fetch_assoc($result); 
// Get result [0]: this could result in an error if your query result is empty. 
$req_id=$rows[0]; 

Кроме того, как уже отмечалось, MySQL является устаревшим, и вы должны обновить до MySQLi или PDO_MySQL если ваш сервер поддерживает его. Если нет, замените серверы.

Также, как указывалось другими, вы должны следить за SQL-инъекцией. This StackOverflow answer очень хорошо описывает проблему.