10

この単純な 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'";

結果が出ます。代わりに変数を使用すると、データが得られません! 私は初心者で、何が間違っているのかわかりません。どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1

20

引用符の間に余分なスペースがあるため、日付が表示されません。

$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値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-03-28T14:30:13.880 に答える