带有签入数组的 mysql 查询中的 IF 语句

发布于 2024-12-15 06:42:37 字数 2101 浏览 0 评论 0原文

我试图在查询中放入 3 个 IF 语句,而不是添加一些 php 代码。 显示的错误是 FUNCTION admin_demo.in_array 不存在

if($pr_aantal[$i] > 0)
{
    // voer query uit
    $sql = "INSERT INTO planning_producten
        (
            planning_id,
            product_id,
            aantal,
            datum_snijden,
            datum_zetten,
            datum_uitbesteed,
            user_id
        )
        VALUES
        (
            '".$planning_id."',
            '".$pr_id[$i]."',
            '".$pr_aantal[$i]."',
            IF(in_array('1', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_snijden."','%d-%m-%Y'), '0000-00-00'),
            IF(in_array('2', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_zetten."','%d-%m-%Y'), '0000-00-00'),
            IF(in_array('3', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_uitbesteden."','%d-%m-%Y'), '0000-00-00'),
            '".$_SESSION['user_id']."'
        )
    ";

    // resultaat van query
    if(!$res = mysql_query($sql,$con))
    {
        include('includes/errors/database_error.php');
    }
}

$pr_bewerking_id[$i] 的创建方式为:

while ($row_i = mysql_fetch_array($res_i))
{
    $i++;

    // maak select name
    $name_bewerking_id = 'name_bewerking_id'.$i;
    ?>

    <tr valign="top">
        <td>
        <select name="<?php echo $name_bewerking_id ?>[]" multiple="multiple" size="2">
        <?php
            $sql_bew = "SELECT id, bewerking FROM bewerkingen ORDER BY orderby ASC";
            $res_bew = mysql_query($sql_bew,$con);
            while ($row_bew = mysql_fetch_assoc($res_bew))
            { ?>
                <option value="<?php echo $row_bew['id']; ?>"><?php echo $row_bew['bewerking']; ?></option>
        <?php } ?>
        </select>
        </td>
    </tr>
<?php }

并发送 有

$pr_bewerking_id[$i] = array();

for ($i = 0; $i <= $pr_aantal_regels; $i++)
{
    $pr_bewerking_id[$i] = $_POST['name_bewerking_id'.$i];
}

任何建议吗?

I'm trying to put 3 IF statements in an query instead of adding some php code.
The error that is shown is FUNCTION admin_demo.in_array does not exist

if($pr_aantal[$i] > 0)
{
    // voer query uit
    $sql = "INSERT INTO planning_producten
        (
            planning_id,
            product_id,
            aantal,
            datum_snijden,
            datum_zetten,
            datum_uitbesteed,
            user_id
        )
        VALUES
        (
            '".$planning_id."',
            '".$pr_id[$i]."',
            '".$pr_aantal[$i]."',
            IF(in_array('1', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_snijden."','%d-%m-%Y'), '0000-00-00'),
            IF(in_array('2', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_zetten."','%d-%m-%Y'), '0000-00-00'),
            IF(in_array('3', '".$pr_bewerking_id[$i]."'), STR_TO_DATE('".$datum_uitbesteden."','%d-%m-%Y'), '0000-00-00'),
            '".$_SESSION['user_id']."'
        )
    ";

    // resultaat van query
    if(!$res = mysql_query($sql,$con))
    {
        include('includes/errors/database_error.php');
    }
}

$pr_bewerking_id[$i] is created with:

while ($row_i = mysql_fetch_array($res_i))
{
    $i++;

    // maak select name
    $name_bewerking_id = 'name_bewerking_id'.$i;
    ?>

    <tr valign="top">
        <td>
        <select name="<?php echo $name_bewerking_id ?>[]" multiple="multiple" size="2">
        <?php
            $sql_bew = "SELECT id, bewerking FROM bewerkingen ORDER BY orderby ASC";
            $res_bew = mysql_query($sql_bew,$con);
            while ($row_bew = mysql_fetch_assoc($res_bew))
            { ?>
                <option value="<?php echo $row_bew['id']; ?>"><?php echo $row_bew['bewerking']; ?></option>
        <?php } ?>
        </select>
        </td>
    </tr>
<?php }

And send thru

$pr_bewerking_id[$i] = array();

for ($i = 0; $i <= $pr_aantal_regels; $i++)
{
    $pr_bewerking_id[$i] = $_POST['name_bewerking_id'.$i];
}

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆夏时光 2024-12-22 06:42:37

我认为你想改变这一点:

IF(in_array('1', '".$pr_bewerking_id[$i]."'),

对此:

IF(FIND_IN_SET('1', '" . $csv_string . "'),

你的代码中也存在 SQL 注入漏洞。使用 mysql_real_escape_string 或参数化查询。

I think you want to change this:

IF(in_array('1', '".$pr_bewerking_id[$i]."'),

To this:

IF(FIND_IN_SET('1', '" . $csv_string . "'),

You also have SQL injection vulnerabilities in your code. Use mysql_real_escape_string or parameterized queries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文