Php 如果语句条件不满足,是否不返回错误?

Php 如果语句条件不满足,是否不返回错误?,php,mysql,if-statement,Php,Mysql,If Statement,我有一个变量$cc,该变量以这种方式存储复选框选择: 251000-1252000-225012-1。。。等(取决于有多少选择) 我已经成功地想出了如何使用strpos if条件将数据存储在多个表中: if (strpos($b,'251000') !== false) { $sql3="INSERT INTO engworkshops (studentid, ckb) VALUES ('$studentid', '$cc')"; echo 'true'; } if (strp

我有一个变量
$cc
,该变量以这种方式存储复选框选择:

251000-1252000-225012-1。。。等(取决于有多少选择)

我已经成功地想出了如何使用strpos if条件将数据存储在多个表中:

if (strpos($b,'251000') !== false) {
    $sql3="INSERT INTO engworkshops (studentid, ckb) VALUES ('$studentid', '$cc')";
    echo 'true';
}

if (strpos($b,'252000') !== false) {
    $sql4="INSERT INTO engdrwnga (studentid, ckb) VALUES ('$studentid', '$cc')";
    echo 'true';
}

if (strpos($b,'252012') !== false) {
    $sql5="INSERT INTO engdrwngb (studentid, ckb) VALUES ('$studentid', '$cc')";
    echo 'true';
}

if (!mysqli_query($dbcon,$sql3)) {
    die('Error: ' . mysqli_error($dbcon));
}

if (!mysqli_query($dbcon,$sql4)) {
    die('Error: ' . mysqli_error($dbcon));
}

if (!mysqli_query($dbcon,$sql5)) {
    die('Error: ' . mysqli_error($dbcon));
}
问题就在这里:这段代码的逻辑只有在所有三个if条件都满足时才起作用,这意味着如果我的变量
$cc
包含251000、252000和252012,它将数据存储在每个表中,不会出现任何问题

我试过了

  • 嵌套的if语句
  • elseif声明
两者都不起作用


我的猜测是,我定义insert语句并检查其中是否有错误(如果没有执行)的方式导致了问题。如何解决此问题?

您可以检查每个条件并有条件地设置
$sql
变量,但无论是否设置变量,您都可以在以下查询中使用
$sql
变量。因此,如果在strpos检查中找不到任何值,则当查询尝试使用
$sql
变量时,将不会设置这些变量,脚本将失效

为了使这种方法起作用,您需要将查询移动到strpos ifs中

if (strpos($b,'251000') !== false) {
    $sql3="INSERT INTO engworkshops (studentid, ckb) VALUES ('$studentid', '$cc')";
    if (!mysqli_query($dbcon,$sql3)) {
        die('Error: ' . mysqli_error($dbcon));
    }
    echo 'true';
}

if (strpos($b,'252000') !== false) {
    $sql4="INSERT INTO engdrwnga (studentid, ckb) VALUES ('$studentid', '$cc')";
    if (!mysqli_query($dbcon,$sql4)) {
        die('Error: ' . mysqli_error($dbcon));
    }
    echo 'true';
}

if (strpos($b,'252012') !== false) {
    $sql5="INSERT INTO engdrwngb (studentid, ckb) VALUES ('$studentid', '$cc')";
    if (!mysqli_query($dbcon,$sql5)) {
        die('Error: ' . mysqli_error($dbcon));
    }
    echo 'true';
}

请注意,此代码易受SQL注入攻击,而此答案仅解决逻辑问题。

A case.或
if(!strpos($b,'252012')| |!strpos($b,'252012')| |!strpos($b,'251000')){
我认为这看起来不错,是的。太好了!我很高兴能够提供帮助。这是一个单独的问题,但我强烈建议修改代码以使用准备好的语句并绑定用户提交的值,而不是将它们直接放入SQL字符串中。我从哪里开始学习构建准备好的语句?与PDO相同吗?准备mysqli中有d语句,但我认为它们更容易与PDO一起使用。请查看PHP文档(,)。其中有一些解释和示例可以帮助您入门。