[mysql]防止将数据添加到数据库

标签: MySQL PHP
发布时间: 2017/4/9 23:41:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想做一个目录,您可以添加自己通过输入代码短信。输入正确的代码短信之后, 它会检查如果代码存在于数据库中,然后从数据库中删除输入的代码和从窗体中添加数据。现在我有一个问题,因为我不知道如何防止将数据添加到数据库中,当给定的代码是不正确。 目前,它看起来像这样︰

    if ($sum != $val1+$val2) {   //simple captcha
            echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
        }
        else {
            if ($_POST['code']){
    $code=$_POST['code'];

    global $wpdb;
    $sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
    $check_code = $wpdb->get_results($sql);

    if ($check_code>0)  {

    $wpdb->delete( 'code_sms', array( 'code' => $code ) );


    if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
                $company_nip = strip_tags($_POST["company_nip"], "");
                $company_name = strip_tags($_POST["company_name"], "");
    $result = $wpdb->insert( 
                    'test', 
                    array( 
                        'company_nip' => $company_nip, 'company_name' => $company_name)
                );

    if (!$result) {
            echo '<div>
    ERROR</div>';
            }
            else {

             echo '<div>
    Succes</div>';
            }
        }
         }
}
    }

编辑︰ 我编辑我的代码,像 @thephatp 说,和现在正在:)

解决方法 1:

你基本上在检查"是否 sms_code 数据库中存在"然后"删除代码;插入表单数据"。

然而,你又闭起你的如果声明事先添加表单数据。移动你 } ,关闭你的如果语句,如下所示。这样一来,如果 sms_code 是不正确的你怎么不处理表单数据如果语句和插入。

此外,你 $check_code 变量不是行,但宁愿结果集数目。此结果集只会 FALSE 如果查询导致错误。 请参阅 get_result 这里的文档︰ mysqli_stmt_get_result

返回为成功的选择查询或假的结果集对于其他 DML 查询或失败。Mysqli_errno() 函数可以用于区分两种类型的故障。

您需要检查结果集的行数和数测试,如果语句。下面的代码已被更新。

  if ($sum != $val1+$val2) {   //simple captcha
            echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
        }
        else {
            if ($_POST['code']){
    $code=$_POST['code'];

    global $wpdb;
    $sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);

   $result = $wpdb->get_results($sql);

   /* Get the number of rows */
   $num_of_rows = $result->num_rows;

    if ($num_of_rows>0)  {

        $wpdb->delete( 'code_sms', array( 'code' => $code ) );

        if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
                    $company_nip = strip_tags($_POST["company_nip"], "");
                    $company_name = strip_tags($_POST["company_name"], "");
            $result = $wpdb->insert( 
                        'test', 
                        array( 
                            'company_nip' => $company_nip, 'company_name' => $company_name)
                    );

            if (!$result) {
                echo '<div>
                ERROR</div>';
            }
            else {

                 echo '<div>
                Succes</div>';
            }
        }
    }
官方微信
官方QQ群
31647020