Как я могу проверить, если переменная сохранена или нет в БД? - PullRequest
2 голосов
/ 24 июня 2011

У меня есть этот код:

$local_id = $_GET['id'];

$sql = dbquery("SELECT * FROM `videos` WHERE `id` = ".$local_id." LIMIT 0, 1");
while($row = mysql_fetch_array($sql)){
$video_id = $row["youtube_id"]; 
// the rest
}

как я могу проверить, не существует ли $ local_id в БД, и показать ошибку?

Ответы [ 4 ]

4 голосов
/ 24 июня 2011

mysql_num_rows

if(mysql_num_rows($sql) == 0) {
    //Show error 
}
1 голос
/ 24 июня 2011
$sql = dbquery("select count(*) from videos where id = ".$local_id." LIMIT 0, 1");
$row = mysql_fetch_row($sql);
if($row[0] == 0)
    echo 'error';
1 голос
/ 24 июня 2011

Вы можете использовать следующий запрос:

"SELECT COUNT(*) FROM `videos` WHERE `id` = ".mysql_real_escape_string($local_id)

Этот запрос вернет одно число: сколько записей соответствует вашему запросу .Если это ноль , вы наверняка знаете, что нет записей с этим идентификатором.

Это более оптимально, чем другие решения, опубликованные , если вы хотите проверить только существованиеID , и данные не нужны (если вы используете SELECT * ..., все данные будут излишне отправлены вам из MySQL).В противном случае mysql_num_rows() является лучшим выбором, так как @ Ryan Doherty правильно опубликовано.

Обязательно ВСЕГДА экранируйте данные, поступившие извне (на этот раз GET), прежде чем поместить их в запрос (mysql_real_escape_string() для MySQL).

Если вы этого не сделаете, вы можете стать жертвой SQL-инъекции .

0 голосов
/ 24 июня 2011

Вы можете иметь переменную $ count и увеличивать ее в цикле while. После цикла проверьте счетчик, если он равен 0, затем выведите сообщение об ошибке.

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