PHP SQL 检查表单输入是否存在于其他表中,然后继续

博杰·瓦尔盖伦

我正在编写一个表单,我希望代码检查插入的参与者想要参加活动的“日期”是否与我的活动表中的“日期”匹配。目前(即使表单输入中的“日期”与事件表中的任何日期都不匹配)用户可以注册任何日期而不会收到验证错误。

在 html 表单“register.html”上,我有:

    <form action="register.php" method="post">
      <div class="form-group">
        <label for="date"> Date of attendence </label>
        <input type="date" class="form-control" id="date" name="date"/>
      </div>
      <input type="submit" class="btn btn-primary" />
    </form>

在“register.php”上我有:

    <?php
        $date = $_POST['date'];

        $conn = new mysqli('localhost','root','','skay');
        if($conn->connect_error){
            echo "$conn->connect_error";
            die("Connection Failed : ". $conn->connect_error);
        } else {
    
            $date_check_query = "SELECT COUNT * FROM events WHERE date='$date'";
            $number_of_matches = mysqli_query($conn, $date_check_query);

            if ($number_of_matches = 0) {
                array_push($errors, "No planned events on this day");
            } else {
                $stmt = $conn->prepare("INSERT INTO registrations(date) values(?)");
                $stmt->bind_param("sssssi", $date); //there are other 5 other values aswell
                $execval = $stmt->execute();
                echo $execval;
                echo "Registration successfully...";
                $stmt->close();
                $conn->close();
            }
        }       
    ?>

格茨博

阿布罗修斯教授

如果分配alias到返回的值count(*)-样count(*) as 'aliasname',你可以把它看成你会在记录的定期专栏。

使用 aprepared statement来输入数据很好,但是如果直接在select查询中使用潜在的恶意数据,那么好的工作就会被取消——无论您何处输入用户输入,都需要采取额外的预防措施,因此在所有此类情况下都使用准备好的语句。

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['date'] ) ){
    
        $date = $_POST['date'];

        $conn = new mysqli('localhost','root','','skay');

        $sql = "SELECT COUNT(*) as `total` FROM `events` WHERE `date`=?";
        $stmt=$conn->prepare($sql);
        $stmt->bind_param('s',$date);
        $stmt->execute();
        $stmt->bind_result($total);
        $stmt->fetch();
        $stmt->close();
        
        
        
        if( $total==0 ){
            $errors[]="No planned events on this day";
        }else{
            $sql='insert into `registrations`( `date` ) values(?)';
            $stmt=$conn->prepare($sql);
            $stmt->bind_param('s',$date);
            $stmt->execute();
            
            $stmt->close();
            $conn->close();             
            echo "Registration successfully...";
        }
    }
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

T-SQL检查表是否存在于架构中

PL/SQL 检查输入的值是否存在于不同的表中

SQL检查表是否存在,然后创建表并插入同一查询

检查表是否存在,如果不存在,请在SQL Server 2008中创建表

表单中是否存在检查表Google电子表格API PHP

检查表在SQL Server中是否存在

如何使用SQL检查表中是否存在变量

sql:检查表B中是否存在表A中的条目

SQL检查表是否存在并截断

PHP数组如何检查所有数组值是否存在于其他数组中

检查表单输入提供的变量,以查看它是否存在于数组中。我想念什么?

检查记录是否存在于SQL表中的最快方法

检查值是否存在于多个表中-Oracle SQL

如何验证输入的发票号是否已经存在于我的sql表中?

检查表是否存在于颤振中

检查表单是否已提交-PHP

是否有任何SQL查询来检查值是否存在或不存在于数据库表中

通过使用Sql中表名称中的特定单词来检查表是否存在

SQL:如何检查表中是否已存在行组

如何检查表中是否已存在sql值以防止重复?

如何在2表中插入数据并检查数据是否已存在于php中的DB中

如何检查表中是否已存在名称?查询Mysql每天的总和,然后通过PHP通过它填充HTML数据

SQL 检查表 1 中的日期是否在表 2 的范围内

SQL Server和C#-如何检查我要上传的varbinary(max)文件是否已存在于表中?

检查记录是否存在于其他表中

检查id是否存在于其他表中

PHP SQL | 在表中查找行,如果不存在,则使用其他表

PHP在更新SQL表之前检查文件是否存在

SQL检查表是否包含值?