2016-03-02 49 views
0

我想從一個形式得到一些變量,我會用這些變量進行例如搜索欄搜索由PHP的MySQL

$SQL = 'SELECT * FROM Table ORDER By $var' 

有什麼建議嗎?如何將此請求轉換爲動態請求?謝謝:)

的代碼是:

<form> 
    <lable for="Variable"> 
    <input type ="text" name="variable" placeholder="Search by : "> 
</form> 
<?php 
    $variable = $_POST['variable'] 
    sql = 'SELECT * FROM Total ORDER BY $variable'; 
?> 
+1

'$ variable'的值是什麼?僅用於訂單? – devpro

+1

首先,form method =「POST」 – Duikboot

+0

您對_「一個動態請求」_的定義是什麼? – CodeGodie

回答

0

起初,

使用method="POST"action="file.php"(但action並不是必需的,在某些情況下,像通過AJAX處理)

<form method="POST" action="file.php"> 
    <lable for="Variable"> 
    <input type ="text" name="variable" placeholder="Search by : "> 
</form> 

第二,你需要清理從表單中提取的輸入(這意味着,你必須消除任何會損害你的頁面的東西 - 用這個PDO或其他圖層可以幫助)。

在第三,你需要重寫

sql = 'SELECT * FROM Total ORDER BY $variable' 

sql = "SELECT * FROM Total ORDER BY $variable" 

sql = 'SELECT * FROM Total ORDER BY '.$variable 

因爲別人使用變量將作爲寫,而不是它的內容(假設使用由形式)。

+0

非常感謝你:) –

0

這是一個簡單的搜索的例子

PHP:

<?php 

$search = $_POST["search"]; 

$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM `profile` WHERE `email`='$search'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; 
} 
} else { 
echo "0 results"; 
} 
$conn->close(); 
?> 

HTML:

<form action="profile.php" method="post"> 
<input type="text" name="search"><br> 
<input type="submit"> 
</form> 

希望它可以幫助

+0

非常感謝:) –

+0

很高興能幫到:) 如果您覺得有用,請接受我的回答 – Nick

1

請參考PDOorder by審查。

您選擇的查詢是

SELECT * FROM yourtable ORDER BY DATABASE_FIELD;