Aki*_*los 10 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);
?>
Run Code Online (Sandbox Code Playgroud)
当我在WHERE子句中直接使用字符串时,就像这样
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='gothaf'";
Run Code Online (Sandbox Code Playgroud)
我得到了一个结果.当我使用变量时,我没有数据!我是新手,我无法弄清楚我做错了什么.任何帮助,将不胜感激.谢谢!
Joh*_*Woo 19
你没有约会,因为你的报价有额外的空间,
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show =' ". $show. " '";
^ HERE ^
Run Code Online (Sandbox Code Playgroud)
然后将解析为
SELECT * FROM toho_shows WHERE toho_shows.show =' gothaf '
Run Code Online (Sandbox Code Playgroud)
删除它,它会工作
$query_getShows = "SELECT * FROM toho_shows WHERE toho_shows.show ='". $show. "'";
Run Code Online (Sandbox Code Playgroud)
作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.