结果中的PHP/MySQL更新表单

结果中的PHP/MySQL更新表单,php,mysql,Php,Mysql,我有一个用PHP/MySQL编写的搜索函数,它工作得很好。我想做的是,当用户生成搜索时,他们可以单击一个按钮,将$id从输出提交到我数据库中的一个表中 我复制了下面的代码,错误在表单中的php echo中,它只显示php代码的纯文本 其他一切都很好,我通过将值设置为“”并自己输入id来测试它,然后它就可以工作了。我希望它是一个隐藏的输入,在未来的id自动通过搜索结果。可以在同一页面上返回多个搜索,并且此表单位于每个搜索结果的下方 <?php $conn = mysqli_connect("

我有一个用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>

发生这种情况的原因是您将
放入了字符串中。您希望执行与示例中其他地方相同的操作:
value=“.”.$id.“
当单引号和双引号同时出现时,可能会很快混淆。你最好学会如何使用它


另外,
的一种有用的速记方式(尽管您不想在这里使用任何一种)

发生这种情况的原因是您将
放在字符串中。您希望执行与示例中其他地方相同的操作:
value=“.”.$id.“
当单引号和双引号同时出现时,可能会很快混淆。你最好学会如何使用它


另外,
的一个有用的速记(尽管你不想在这里使用任何一个)

杰伊·布兰查德(Jay Blanchard)强调的问题,你对此有点轻描淡写——也许你担心当前问题会分散注意力——实际上与你在问题中强调的问题非常相关

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

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

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

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

$output=” 杰伊·布兰查德(Jay Blanchard)强调的问题,你对此有点轻描淡写——也许你害怕从当前问题中分心——实际上与你在问题中强调的问题非常相关

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

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

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

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

$output=”。。。表示了解的语句。即使是这样也不安全!谢谢,我对这方面有点生疏,当项目完成后,我会在PDO上线之前查看它的所有内容。一个隐藏字段=
是的,我很乐意这样做,它得到的值会使用我正在努力搜索的输出自动填充。我只使用了“文本”所以我可以看到接下来发生了什么,比如说,为我们学习陈述。即使是这样也不安全!谢谢,我对这方面有点生疏,当项目完成后,我会在PDO上线之前查看它的所有内容。一个隐藏字段=
是的,我很乐意这样做,它得到的值会使用我正在努力搜索的输出自动填充。我只使用了“文本”所以我可以看到发生了什么谢谢你这么多完美的作品!非常深入的解释,也是可以理解的,我非常感谢!谢谢你这么多作品完美!非常深入的解释,也是可以理解的,我非常感谢!工作很有魅力,非常感谢!也谢谢你提供的速记技巧!工作很有魅力,非常感谢!也谢谢你提供的速记技巧!
$output = '... <input type="text" name="id" value="' . htmlspecialchars($id) . '"> ...';
$output = '... <input type="text" name="id" value="' . intval($id) . '"> ...';