我有一个变量$cc
,这个变量以这种方式存储复选框选择:
251000-1,252000-2,252012-1 ...等(取决于选择的数量)
如果条件:
,我已成功找出如何使用strpos将数据存储在多个表中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));
}
问题在于:此代码的逻辑仅在满足所有三个条件时才有效,这意味着如果我的变量$cc
包含251000和252000以及252012,则它将数据存储在每个表中而没有任何问题任何。
我试过
两人都没有工作
我的猜测是,我定义插入语句并在未执行时检查错误的方式导致了问题。我该如何解决这个问题?
答案 0 :(得分:1)
您检查每个条件并有条件地设置$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注入攻击,而且这个答案并没有解决这个问题,只解决了逻辑问题。