Строковая переменная PHP в предложении WHERE MySQL
У меня возникла проблема с этим простым sql-запросом:
<?php
require_once('../../Connections/tohoshows.php');
$show ='gothaf';
mysql_select_db($database_tohoshows, $tohoshows);
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '";
$getShows = mysql_query($query_getShows, $tohoshows) or die(mysql_error());
$row_getShows = mysql_fetch_assoc($getShows);
$totalRows_getShows = mysql_num_rows($getShows);
mysql_free_result($getShows);
?>
Когда я использую строку непосредственно в предложении WHERE, как это
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='gothaf'";
Я получаю результат. Когда я использую переменную вместо этого, я не получаю никаких данных! Я новичок и не могу понять, что я делаю не так. Любая помощь будет признательна. Спасибо!
1 answers
Вы не получаете дату, потому что у вас есть дополнительное пространство между кавычками,
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '";
^ HERE ^
, который затем будет проанализирован на
SELECT * FROM toho_shows WHERE toho_shows.show =' gothaf '
Удалите его, и он будет работать
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='". $show. "'";
В качестве примечания, запрос уязвим с SQL Injection
если значение (s) переменных пришло извне. Пожалуйста, ознакомьтесь со статьей ниже, чтобы узнать, как предотвратить это. Используя PreparedStatements
, вы можете избавиться от использования одинарных кавычек вокруг ценности.