Php 如何在mysql中动态生成Where子句

Php 如何在mysql中动态生成Where子句,php,mysql,Php,Mysql,登录到个人帐户并单击“接受”按钮后,系统应在mysql表的otp列下插入一系列数字,以进行验证。这里的问题是我想在WHERE子句中使其成为动态的。它应该根据用户ID本身识别并插入otp。 下面是代码 if(isset($_POST['generate'])) { $num = (rand(111111, 999999)); file_get_contents("somelink"); $query = mysqli_query($con, "UPDATE users

登录到个人帐户并单击“接受”按钮后,系统应在mysql表的otp列下插入一系列数字,以进行验证。这里的问题是我想在WHERE子句中使其成为动态的。它应该根据用户ID本身识别并插入otp。 下面是代码

if(isset($_POST['generate']))
{
    $num = (rand(111111, 999999));

    file_get_contents("somelink");

    $query = mysqli_query($con, "UPDATE users SET otp='".$num."' WHERE id = 21");
    $qry_run = mysqli_query($con, $query);
    mysqli_close($con);

    header("location: otp.php");
}

您不应使用与sql连接的var。。此行为允许sql注入,因此您应该使用prepare bind_param并执行

假设您在var中有与id匹配的值,那么您也可以将这个var用于param

$con = $con->prepare("UPDATE users SET opt = ? WHERE id = ?");
$con->bind_param('ii', $num, $id);

$num  = (rand(111111, 999999));
$id = 21;
$con->execute();

mysqli_close($con);

您是否考虑过在SQL中使用


用户id来自哪里$_获取var?,$\u POST var?看起来您需要使用cookies。但你的问题不清楚。@accounterمid是一个主键,用户注册时会自动分配给他们。@SKhan你是什么意思?此$query=mysqli_query$con,更新用户设置otp='.$num',其中id=21$qry_run=mysqli_query$con$query;出错了。如果你不相信我,请使用mysqli_error$con。编辑你会看到一个1。@SKhan那么什么不起作用了?你从来没有说过,也没有对提供给你的任何答案发表评论。你的沉默让每个人都蒙在鼓里。查看这些内容并在其下方进行评论。否则,这篇文章就过时了;我出去了。
UPDATE users SET otp = RAND() WHERE id = 21