WHERE子句MySQL中的PHP字符串变量

时间:2013-03-28 14:28:36

标签: php mysql sql select

我遇到这个简单的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 个答案:

答案 0 :(得分:19)

你没有约会,因为你在报价之间有额外的空间,

$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. "'";

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。