Строковая переменная 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'";

Я получаю результат. Когда я использую переменную вместо этого, я не получаю никаких данных! Я новичок и не могу понять, что я делаю не так. Любая помощь будет признательна. Спасибо!

Author: Manuel Rauber, 2013-03-28

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, вы можете избавиться от использования одинарных кавычек вокруг ценности.

 18
Author: John Woo, 2017-05-23 10:30:59