2016-03-02 47 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;