**詳細の編集PHP検索ページを作成してSQL Serverデータベースを検索する
SQL Serverデータベースの結果を表示するための検索ページの作成に問題があります。私のSSMSで必要なものを出力するので、私のSQLは正しいです。私がテストしたので、私の接続情報も正しいです。私の問題は、検索フォームにそれを結びつけることから来ています - 私は結果を見つけるためにそれを得ることができません。しかし、テーブルを印刷したいのであれば、それはうまく印刷されますが、実際にはこれを検索する必要があります。私は一般的にPHPとSQLでまだかなり新しいですが、これは私がこれまで持っているものです。
<form> action="" method="post">
<input type="text" name="search" placeholder="Search for address...">
<input type="submit" value="Submit">
</form>
<?php print("$output"); ?>
私が検索するたびに私が手なし:
$serverName = "myserver";
$connectionInfo = array("Database"=>"mydb", "UID"=>"myuser", "PWD"=>"mypass");
$conn = sqlsrv_connect($serverName, $connectionInfo) OR die ('broke:' .sqlsrv_errors());
$output = '';
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
$query = sqlsrv_query($conn, "SELECT columns_I_need
FROM tables_I_need
WHERE col_1 LIKE '%$searchq%'") or die('broke:' .sqlsrv_errors());
$count = sqlsrv_num_rows($query);
if($count == 0) {
$output = 'There was nothing';
} else {
while($row = sqlsrv_fetch_array($query)) {
$stname = $row['streetname'];
$stno = $row['streetnumber'];
$apno = $row['permitnumber'];
$output .= '<div> '.$stname.' '.$stno.'</div>';
}
}
}
マイ検索フォームは次のようになります結果。だから私の質問は:私の検索フォームが正しいと私のWHERE col_1 LIKE '%$searchq%'
は正しいですか?私は何が欠けていますか?また、preg_replace
はSQLインジェクションの防止に役立ちませんか?
これほど説明的でない場合は、私にお知らせください。
正確に何が起こっていますか?あなたは問題があると言いましたが、問題の内容は述べていません。また、あなたのコードはSQLインジェクションに対して脆弱です - パラメータ化されたクエリ/プリペアドステートメントの使用を研究します。 – ADyson
http://bobby-tables.com/php.html –
昨日の長い日、残して申し訳ありません。私が検索すると結果が見つかりません。私はちょうど得る$出力に基づいて何もなかった。 dbをXMLファイルにダンプしてセキュリティ上のリスクを防ぐためにファイルを検索する方が良いでしょうか? –