ホームページ  >  記事  >  バックエンド開発  >  mysql に接続した後にクエリができないのはなぜですか?

mysql に接続した後にクエリができないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-13 13:44:341349ブラウズ

mysql に接続した後、
フォーム ページ コードをクエリできないのはなぜですか:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><html>
<head>catalog search</head>
<body>
<h1>catalog search</h1>
<form action="results.php" method="post">
choose search type:<br/>
<select name="searchtype">
<option value="author">author</option>
<option value="title">title</option>
<option value="isbn">isbn</option>

</select>
<br/>
enter search term:<br/>
<input name="searchterm" type="text" size="40"/>
<br/>
<input  type="submit" name="submint" value="search"/>
</form>
</body>

</html>


PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><html>
<body>
<h1>search results</h1>
<?php
$searchtype=$_POST['searchtype'];
$searchterm=trim($_POST['searchterm']);
if(!$searchtype||!$searchterm){
    echo"请输入值";
        exit;

}
if(!get_magic_quotes_gpc())
{
    $searchtype=addslashes($searchtype);
    $searchterm=addslashes($searchterm);
}
@ $db=new mysqli('localhost','root','root','books');
if (mysqli_connect_errno()) 
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}

$query="select * from books where".$searchtype."like '%".$searchterm."%'";
$result=$db->query($query);
$num_results=$result->num_rows;
echo "<p>Number of books found:".$num_results."</p>";
for ($i=0;$i<$num_results;$i++)
{
    $row=$result->fetch_assoc();
    echo"<p><strong>".($i+1)."title:";
    echo htmlspecialchars(stripslashes($row['title']));
    echo "</strong><br/>author:";
    echo stripslashes($row['author']);
    echo"<br/>isbn:";
    echo stripslashes($row['isbn']);
    echo"<br/>price:";
    echo stripslashes($row['price']);
    echo"</p>";
}
?>
</body>
</html>


出力結果:

検索結果
見つかった書籍の数:

クエリで結果が得られない理由

-----解決策----- ---------------
クエリの実行後にエラーチェックを実行しませんでした。
1 を追加してください。正しいフィールド名
2. $query="select * from Books where".$searchtype."like '%".$searchterm."%'";

のように前にスペースがありますこうやって書いたほうがすっきりしませんか?
$query = "$searchtype が '%$searchterm%' のような書籍から * を選択";


------解決策----------------------
$query="select * from Books where" . $searchtype."like '%".$searchterm."%'";
echo $query; が同等かどうかを確認します。 赤い部分が繋がっているということでよろしいでしょうか?
------解決策----------------------
$query="select * from Books where" . $searchtype."like '%".$searchterm."%'";
$query = "select * frombooks where $searchtype like '%$searchterm%'";
これら 2 つの SQL は区別されています。
""内部はすべて文字列なので、スペースを入れずに .$searchtype を直接記述します。 。 。 。結果は同じだと思いますか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。