2013-03-28 14 views
9

Mam problem z tego prostego zapytania SQL:PHP zmienne ciąg w WHERE MySQL

<?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); 
?> 

Gdy używam ciąg bezpośrednio w klauzuli WHERE jak ten

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='gothaf'"; 

mogę dostać wynik. Kiedy używam zmiennej, nie otrzymuję danych! Jestem nowicjuszem i nie mogę zrozumieć, co robię źle. Każda pomoc będzie doceniona. Dziękujemy!

+2

[** Proszę, nie używaj '*' mysql_ funkcje nowego kodu **] (http://bit.ly/phpmsql). Nie są już utrzymywane [i są oficjalnie przestarzałe] (http://j.mp/XqV7Lp). Zobacz [** czerwone pudełko **] (http://j.mp/Te9zIL)? Dowiedz się więcej o [* przygotowanych wyciągach *] (http://j.mp/T9hLWi) i użyj [PDO] (http://php.net/pdo) lub [MySQLi] (http://php.net/ mysqli) - [ten artykuł] (http://j.mp/QEx8IB) pomoże ci zdecydować, który. – Kermit

Odpowiedz

17

otrzymujesz żadnej daty, bo masz dodatkową przestrzeń betwee cudzysłowów,

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '"; 
                    ^HERE ^

które następnie będą analizowane pod

SELECT * FROM toho_shows WHERE toho_shows.show =' gothaf ' 

usunąć go i będzie działać

$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='". $show. "'"; 

Jako sidenote, q uery jest podatne na ataki z SQL Injection, jeśli wartość zmiennych (s) pochodzi z zewnątrz. Zapoznaj się z poniższym artykułem, aby dowiedzieć się, jak temu zapobiec. Używając PreparedStatements możesz pozbyć się pojedynczych cudzysłowów wokół wartości.

+0

Dziękuję za odpowiedź! Próbowałem również bez spacji pomiędzy, ale wciąż nie otrzymuję danych. –

+0

po wynik tego 'echo $ query_getShows;' –

+0

Nie powinieneś nawet rozważać używania tego podejścia, @Akis, to naprawdę łatwe w użyciu przygotowane instrukcje, a jednak jest krytyczne dla systemu. – Jonast92