WordPress在数据库中搜索输入,通过表单编辑信息并更新数据库

时间:2021-10-04 作者:Eliza T

我想编写一个自定义表单,通过查找机器的序列号来筛选出我感兴趣的行,以提供所有其他信息(例如全名和电子邮件),这样我就可以让用户指出修改其他信息的详细信息。

<?php

/*
Template Name: Details Edit
*/

get_header();

?>

<body>
    <div style="width:800px; margin:0 auto;">
        <form action="" method="post"><br><br>
            <label for="search"> Search (Machine S/N) To Edit: <br>
                <input id="search" style="width:400px; margin:auto;" type="text" name="search" value="" required/>
            </label><br>
            <input type="submit" name="submit" value="Search">
            <input type="reset"> <br><br>
        </form>
    </div>
</body>

<?php

$search = \'\';

if( isset($_POST[\'submit\'])){
    $search = isset($_POST[\'search\']) ? $_POST[\'search\'] : \'\';

    global $wpdb;

    $result = $wpdb->get_results ( " SELECT * FROM  patient_details WHERE m_sn = \'$search\'" );


    if ($result>0){
        foreach ( $result as $page )
        { ?>

        <div style="width:800px; margin:0 auto;">
        <form action="" method="post">
            <label for="_p_name"> Name: <br>
                <input id="_p_name" style="width:400px; margin:auto;" type="text" name="_p_name" value="<?php echo $page->p_name; ?> " required/>
            </label><br>
            <label for="_email"> Email Address: <br>
                <input id="_email" style="width:400px; margin:auto;" type="text" name="_email" value="<?php echo $page->email; ?>" required/>
            </label><br>
            <label for="_m_sn"> Machine Serial Number <br>
                <input id="_m_sn" style="width:400px; margin:auto;" type="text" name="_m_sn" value="<?php echo $page->m_sn; ?>">
            </label><br>
                <input type="checkbox" id="checkbox" required/>
                <label for="checkbox"> I have checked the information are correct.
                </label><br><br>
            <input type="submit" name="update" value="Update">
            <br><br>
        </form>
    </div>

        <?php

            echo \'<pre>\';
            print_r($_POST); 
            $_p_name = $_email = $_m_sn = \'\';

            if ( isset($_POST[\'submit\'])){
            $_p_name = isset($_POST[\'_p_name\']) ? $_POST[\'_p_name\'] : \'\';
            $_email = isset($_POST[\'_email\']) ? $_POST[\'_email\'] : \'\';
            $_m_sn = isset($_POST[\'_m_sn\']) ? $_POST[\'_m_sn\'] : \'\';

            global $wpdb;
            $sql=$wpdb->query(" UPDATE `patient_details` SET `p_name`=\'$_p_name\',`email`=\'$_email\',`m_sn`=\'$_m_sn\' WHERE `p_id` = \'$page->p_id\' ");
        ?>


    <?php
    };
    } 

} ?>

<?php

getfooter();

?>

上面写着

            echo \'<pre>\';
            print_r($_POST); 
旨在告诉我表单中输入了什么,但我收到了以下反馈:

Array
(
    [search] => P1234567890B
    [submit] => Search
)
所以,我需要帮助如何让程序检测“的输入”_p\\U名称“"E_电子邮件“;是否使用更新功能形成和修改?或者,您有什么建议可以让我更好地编写此程序;向上搜索以允许用户修改数据库表中的详细信息;?谢谢你!非常感谢您的帮助

1 个回复
SO网友:Muhammad Saqib Sarwar

我有一些意见/建议可能会有所帮助。

您应该在搜索表单中使用GET方法而不是POST方法,以便在更新表单中使用POST方法。

更新查询不应是生成更新表单的循环的一部分。我建议将更新代码移到文件的顶部,并将其置于可用核心字段的条件下。

更新表单中没有具有p\\U id名称的字段,因此请为其包含一个隐藏字段,并根据该字段的值更新数据库。

还要确保所有生成的标记都显示在body标记中。

希望在进行这些更改后,您将拥有更好的代码结构,并且还能够解决任何遗留问题。

祝你好运

相关推荐

How to secure my php forms

请告诉我如何使用php创建和显示表单的安全建议,我想从安全角度了解我的以下代码是否不受交叉脚本攻击或sql注入或任何形式的攻击或黑客攻击。$form = \'<div class=demessage>\' . esc_html__($message, \"gold\") . \'</div>\' ; $form .= \'<form action=\"\" method=\"post\" name=\"base\">\'; $form .= e