首页 > 解决方案 > 在 php bind_param 函数中插入 SQL 语句

问题描述

所以我试图使用 sql 命令准备来避免注入,但我不知道如何在 bind_param 函数中使用 SQL语句。我的代码是这样的:

function saveContent($POST_DATA) {
    $conn = new mysqli("HOST", "USER", "PASSWORD");
    if ($conn->connect_error) {
        return false;
    } else {
        $command = $conn->prepare("INSERT INTO events (title, dateHappening, time, topic, 
        subtopic, extraMessage) VALUES (?, ?, ?, ?, ?, ?)";
        
        $command->bind_param("ssssss", $POST_DATA["inputTitre"], $POST_DATA["inputDate"], 
        $POST_DATA["inputHour"], $POST_DATA["selectTopic"], $POST_DATA["selectSubTopic"], 
        $POST_DATA["inputMessage"]);
        $command->execute();
        $command->close();
        $conn->close();

    }
}

这里的事情是,如果它是空白的,我想extraMessage是 NULL(因为这个字段不是强制性的)。为了优化这段代码,我想使用类似的东西

NULLIF($POST_DATA["inputMessage"], "")

是否可以在 bind_param 函数中插入上述语句?

标签: phpmysqli

解决方案


问题已解决(请参阅我的问题下的评论):

不可以。您必须在查询中编写所有 SQL 表达式,并且只在值所在的位置插入占位符。因此,本质上,您将NULLIF(?, "")输入查询,而不仅仅是一个?. ——</p>


推荐阅读