MySQL запрос SELECT не работает с возвратом отдельных значений - PullRequest
0 голосов
/ 14 марта 2012

Я искал ответ, прежде чем написать это, но ничего не нашел, но не стесняйтесь опубликовать ссылку, если я ее пропустил.

Я пытаюсь получить значения из одной строки моей таблицы mysql. Запрос, который я использую ниже, ничего не возвращает; эхо mysql_num_rows всегда ноль. Я знаю, что переменная заголовка, используемая в WHERE, действительна, и база данных подключена и т. Д. Спасибо заранее.

$title = $_REQUEST["title"];
$query = mysql_query("SELECT * FROM links WHERE title = '$title'");
if(!$query) {
    die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
$row = mysql_fetch_row($query);//also tried mysql_fetch_array
$link = $row['link'];
$type = $row['type'];
$user = $row['user'];
$date = $row['date'];
$rating = $row['rating'];
$info = $row['info'];

Ответы [ 6 ]

1 голос
/ 14 марта 2012

Попробуйте получить значения без где, как этот:

$query = mysql_query("SELECT * FROM links") or die(mysql_error());

Если что-то не так, вы должны получить сообщение об ошибке.

Многие уже говорят это, но пытаются очистить параметры запроса ^ _ ^

1 голос
/ 14 марта 2012

Если mysql_num_rows возвращает ноль, это означает, что ваш запрос, вероятно, ничего не выбирает из базы данных.Вы должны проверить, действительно ли ваш SQL-запрос выбирает что-либо.Проверьте значение переменной $ title и попробуйте выполнить запрос непосредственно к вашей базе данных.

Вы также уязвимы для инъекций sql .Всегда фильтруйте пользовательский ввод.Для этого вы можете использовать mysql_real_escape_string и htmlspecialchars.

1 голос
/ 14 марта 2012
$title = $_REQUEST["title"];
$query = mysql_query("SELECT * FROM links WHERE title = '$title'");
if(!$query) {
die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
while($row = mysql_fetch_row($query))
 { 
  $link = $row['link'];
    $type = $row['type'];
    $user = $row['user'];
    $date = $row['date'];
    $rating = $row['rating'];
    $info = $row['info'];
  }
1 голос
/ 14 марта 2012

Попробуйте с:

$title = mysql_real_escape_string($_REQUEST["title"]);
$query = mysql_query("SELECT * FROM links WHERE title LIKE '$title'");
echo $query // run it in mysql prompt to check if there are any results first.
if(!$query) {
    die ("Error: " . mysql_error());
}
echo mysql_num_rows($query);
$row = mysql_fetch_row($query);//also tried mysql_fetch_array
$link = $row['link'];
$type = $row['type'];
$user = $row['user'];
$date = $row['date'];
$rating = $row['rating'];
$info = $row['info'];
0 голосов
/ 14 марта 2012

вы должны использовать while ($ row = mysql_fetch_row ($ query) {...}, а также использовать mysql_real_escape_string, чтобы избежать внедрения sql. А также не использовать команду echo перед mysql_num_rows. И даже я думаю, что нет необходимости получать количество строк для выполнения оставшихся часть сценария.

P. Я на мобильном телефоне, поэтому не могу опубликовать сценарий.

0 голосов
/ 14 марта 2012

Обычно нужно распечатать SQL-запрос, чтобы убедиться, что вы ожидаете.

$sqlquery = "SELECT * FROM links WHERE title='".$title."'";
$query = mysql_query($sqlquery);
echo $sqlquery; 

также, как уже упоминалось ... вы уязвимы для атак SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...