**編輯的更多信息創建PHP搜索頁面搜索SQL Server數據庫
我在創建搜索頁面來顯示從SQL Server數據庫結果的問題。我的SQL是正確的,因爲它在SSMS中輸出我想要的內容。我的連接信息也正確,因爲我已經測試過了。我的問題來自將其綁定到搜索表單 - 我找不到任何結果。如果我想讓它打印一張表格,它的打印效果很好,但是,我真的需要這樣做才能用作搜索。我仍然很新的PHP和SQL一般,但是這是我到目前爲止有:
$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>';
}
}
}
我的搜索形式如下:
<form> action="" method="post">
<input type="text" name="search" placeholder="Search for address...">
<input type="submit" value="Submit">
</form>
<?php print("$output"); ?>
每次我搜索我沒有得到任何結果。所以我想我的問題是:我的搜索表單是否正確,我的WHERE col_1 LIKE '%$searchq%'
是否正確?我錯過了什麼?另外,preg_replace
沒有幫助防止SQL注入?
如果這些描述不夠詳細,請告訴我。
究竟發生了什麼問題?你說過有問題,但沒有說出問題是什麼。此外,您的代碼易受SQL注入攻擊 - 研究使用參數化查詢/準備語句。 – ADyson
http://bobby-tables.com/php.html –
昨天很長一段時間,對不起,離開了。當我搜索它時沒有找到任何結果。我剛剛得到沒有任何基於$輸出。將數據庫轉儲爲XML文件,然後搜索該文件以防止出現安全風險,會更好嗎? –