gpt4 book ai didi

PHP/MySQL 从结果中更新表单

转载 作者:行者123 更新时间:2023-11-29 06:58:25 25 4
gpt4 key购买 nike

我有一个用 PHP/MySQL 编写的搜索功能,运行良好。我想要发生的是,当用户进行搜索时,他们可以单击一个按钮,该按钮会将输出中的 $id 提交到我的数据库中的表中。

我复制了下面的代码,错误出现在表单中的 php echo 中,它只显示 php 代码的纯文本。

其他一切都工作正常,我已经通过将值设置为“”并自己输入 id 来测试这一点,然后它就可以工作了。我希望它成为将来的隐藏输入,其中 id 自动从搜索结果中获取。可以在同一页面上返回多个搜索,并且此表单位于每个单独的搜索结果下方。

<?php
$conn = mysqli_connect("localhost","root","","users");
$output = '';

if(isset($_POST['search'])) {
$search = $_POST['search'];
$search = preg_replace("#[^0-9a-z]i#","", $search);

$query = mysqli_query($conn, "SELECT * FROM users WHERE main LIKE '%".$search."%'") or die ("Could not search");
$count = mysqli_num_rows($query);

if($count == 0){
$output = "There was no search results!";
}else{
while ($row = mysqli_fetch_array($query)) {

$id = $row ['id'];
$main = $row ['main'];
$postcode = $row ['postcode'];
$available = $row ['available'];
$email = $row ['email'];


$output .='<div><br><b>Player ID: </b>'.$id.'<br><b>Main:
</b>'.$main.'<br><b>Postcode: </b>'.$postcode.'<br><b>Available:
</b>'.$available.'<br>
<br>
<form action="request_player.php" action="post">
<input type="text" name="id" value="<?php echo $id ?>">
<input type="submit" value="Request Player">
</form>
</div>';
}

}
}
echo $output;
?>

<br> <a href="index.php">Back to your account</a>

最佳答案

Jay Blanchard 强调的问题(也许是因为您担心会分散您当前问题的注意力)而您对此不太重视,实际上与您在问题中强调的问题非常相关。

顺便说一句。这并不罕见。在这个小脚本中,您将处理三种语言:HTML、SQL 和 PHP。所有这些都是混合在一起的。事情可能会变得困惑。

有一些方法可以防止这些小错误。 Jay 强调的是如何正确编码 SQL 查询。

另一个问题是正确编码 HTML 字符串。让我强调一下这部分:

$output = '... <input type="text" name="id" value="<?php echo $id ?>"> ...';

在这个 PHP 字符串中,您逐字写入“<?php echo $id ?>”,这意味着,这将回显。

您最可能的意思是这样写:

$output = '... <input type="text" name="id" value="' . $id . '"> ...';

所以这似乎很容易解决。然而,重要的是,无论是 SQL 还是 HTML,如果您想将它们用作 SQL 或 HTML,则需要对值进行正确编码。在 HTML 情况下,您必须确保 ID 被正确编码为 HTML 属性值。 PHP 中有一个方便的函数:

$output = '... <input type="text" name="id" value="' . htmlspecialchars($id) . '"> ...';

或者当 ID 是数字时:

$output = '... <input type="text" name="id" value="' . intval($id) . '"> ...';

效果同样好。

您需要处理所有用户数据,即所有输入 - 包括您从数据库返回的内容(!) - 当您将其传递到不同的语言(无论是 HTML、SQL 还是 Javascript)时都需要进行处理.

对于 SQL,Jay 为您链接了一个很好的资源,对于 HTML,我手头没有好的资源,但它需要您自己的深思熟虑以及了解您在那里所做(编写)的内容的意愿。因此,请提高您的感官,想象每次操作时会发生什么以及这一切如何结合在一起。

将事情分开并因此有助于集中精力于工作的一种方法是首先收集要输出的所有数据,然后在输出模板中处理这些变量。这将阻止您创建大字符串只是为了稍后回显它们。 PHP 自动回显,PHP 的一个好处是您可以轻松地使用它进行模板化。

另一种方法是首先处理表单输入 - 再次处理到您自己的变量结构中 - 这是程序输入部分并首先运行。然后是输入数据的处理,在您的情况下运行并处理数据库查询。之后你就会关心演示。这样您就可以更加熟练地执行通用步骤。

我希望这是可以理解的。它充满了更多的障碍,但分而治之的这些编程问题是值得的。它还将帮助您在需要少写的时候写更多的内容。

顺便说一句,你不需要切换到 PDO,你可以坚持使用 Mysqli。

关于PHP/MySQL 从结果中更新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44658953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com