使用POST方法显示PHP数据库中的数据
我正在链接中使用此SQL查询从数据库检索数据使用POST方法显示PHP数据库中的数据,php,html,post,Php,Html,Post,我正在链接中使用此SQL查询从数据库检索数据 <div class="nav-laptop"><a href="proizvodi.php?upit=SELECT Slika, Naziv, Opis, Cijena FROM Proizvodi WHERE Kategorija='Laptop' ORDER BY Proizvodac Asc;">Laptop</a> 并使用 $sql = $_REQUEST['upit']; $result = $
<div class="nav-laptop"><a href="proizvodi.php?upit=SELECT Slika, Naziv, Opis, Cijena FROM Proizvodi WHERE Kategorija='Laptop' ORDER BY Proizvodac Asc;">Laptop</a>
并使用
$sql = $_REQUEST['upit'];
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<div class='proizvodi'>";
// output data of each row
$result->data_seek(0);
while($row = $result->fetch_assoc()) {
echo "<div class='row'>";
foreach($row as $key => $value){
echo "<div class='" . $key . "'>" . $value . "</div>";
}
echo "</div>";
echo "<hr />";
}
echo "</div>";
}
else {
echo "<div class='search-query-none'><img src='index/no result.png' width='754' height='198' /></div>";
}
$sql=$\u请求['upit'];
$result=$conn->query($sql);
如果($result->num_rows>0){
回声“;
//每行的输出数据
$result->data\u seek(0);
而($row=$result->fetch_assoc()){
回声“;
foreach($key=>$value的行){
回显“$value.”;
}
回声“;
回声“
”;
}
回声“;
}
否则{
回声“;
}
我意识到这是非常脆弱的,我应该使用POST方法从URL中隐藏参数。我试着阅读在线论坛,但我发现没有任何东西可以帮助我将其转换为POST方式来检索数据。
那么,我如何使用POST方法来获得与我现在使用GET获得的相同的结果呢?这将为您提供一个关于如何实现这一点的总体思路 HTML格式:
<form method="post" action="your_handler.php">
<input type = "text" name = "search_query">
<input type = "submit" name = "submit" value = "Search">
</form>
您也可以用所述列替换SELECT*
理想情况下,一份准备好的声明很好使用
- (如果你想调查PDO)
mysqli_u1;
与PDO混合使用。他们就是不混在一起
根据您的查询检查错误:
或die(mysqli\u error($conn))
添加到mysqli\u query()
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
这将为您提供如何执行此操作的总体思路
HTML格式:
<form method="post" action="your_handler.php">
<input type = "text" name = "search_query">
<input type = "submit" name = "submit" value = "Search">
</form>
您也可以用所述列替换SELECT*
理想情况下,一份准备好的声明很好使用
- (如果你想调查PDO)
旁注:不要将不同的MySQL API(如mysqli_u1;
与PDO混合使用。他们就是不混在一起
根据您的查询检查错误:
将或die(mysqli\u error($conn))
添加到mysqli\u query()
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
对于选择查询,不需要使用POST
。可以,但它更适合于INSERT/UPDATE/DELETE
,即实际更改数据的事情。使用类似于搜索结果的链接的一个可能优势是,它可以保存、添加书签、通过电子邮件发送等,而表单提交无法保存这些内容。但你是对的,把你的整个查询放到这样的链接中肯定是非常脆弱的
您可以只传递参数,而不是通过链接传递整个查询,如下所示:
<a href="proizvodi.php?kategorija=Laptop">Laptop</a>
对于SELECT
查询,不需要使用POST
。可以,但它更适合于INSERT/UPDATE/DELETE
,即实际更改数据的事情。使用类似于搜索结果的链接的一个可能优势是,它可以保存、添加书签、通过电子邮件发送等,而表单提交无法保存这些内容。但你是对的,把你的整个查询放到这样的链接中肯定是非常脆弱的
您可以只传递参数,而不是通过链接传递整个查询,如下所示:
<a href="proizvodi.php?kategorija=Laptop">Laptop</a>
您必须使用表单(最简单的方法)通过POST方法发送参数。只发送可能更改的参数-如您案例中的类别。然后使用预先准备好的语句以避免受到攻击。您应该使用PHP构建查询。从URL发送查询是非常不安全的。如果有人发现了它并加载了proizvodi.php?upit=delete from proizvodi
,那么您的整个数据表就不见了;或者可能更糟,将所有文本更改为链接。请查看,和/或。您必须使用表单(最简单的方式)通过POST方法发送参数。只发送可能更改的参数-如您案例中的类别。然后使用预先准备好的语句以避免受到攻击。您应该使用PHP构建查询。从URL发送查询是非常不安全的。如果有人发现了它并加载了proizvodi.php?upit=delete from proizvodi
,那么您的整个数据表就不见了;或者可能更糟的是,将所有文本更改为链接。请看,和/或。哇,这看起来不错。“我会看看的。”“嗜血成性的享受!”;-)干杯,非常感谢你!昨晚我的电脑出了问题,现在我终于成功了。希望现在SQL注入比以前安全多了(肯定是…):我还有很多东西要学。@blooddunk非常欢迎你,很高兴我能帮上忙,干杯!哇,这看起来不错。“我会看看的。”“嗜血成性的享受!”;-)干杯,非常感谢你!昨晚我的电脑出了问题,现在我终于成功了。希望现在SQL注入比以前安全多了(肯定是…):我还有很多东西要学。@blooddunk非常欢迎你,很高兴我能帮上忙,干杯!我试着使用它,但它没有返回结果hm。可能是查询错误。我试着使用它,但它没有返回结果hm。可能是查询错误。