gpt4 book ai didi

php - MySQL在使用$_REQUEST获取值后插入NULL值

转载 作者:行者123 更新时间:2023-11-29 08:57:30 32 4
gpt4 key购买 nike

我有输入字段,但如果用户将其留空,我想将空值插入到我的数据库中。

我请求这样的值:

$val1 = htmlspecialchars($_REQUEST["val"], ENT_QUOTES);

然后将它们插入数据库:

INSERT INTO `table` ( `val1` , `val2` , `val3`) 
VALUES ('$val1', '$val2', '$val3');

我尝试删除 val1、val2、val3 周围的 ' - 但如果没有值,则不会将任何内容插入到数据库中。我也尝试过这样的事情:

if (!empty($val1)) {
$val1 = "'".$val1."'";
} else {
$val1 = NULL;}

然后没有值周围的 ' - 仍然没有插入到数据库

最佳答案

好的,首先是这个

INSERT INTO table ( val1 , val2 , val3) VALUES ('val1', 'val2', 'val3');

只会插入文字值“val1”、“val2”和“val3”。您没有使用任何 PHP 变量。

其次,使用准备好的语句和参数绑定(bind)来执行查询,以防止 SQL 注入(inject)。例如使用PDO

$pdo = new PDO(/* DSN, username and password, just read the docs */);

$stmt = $pdo->prepare('INSERT INTO table (val1, val2, val3) VALUES (?, ?, ?)');

$params = array(
isset($_REQUEST['val1']) ? $_REQUEST['val1'] : null,
isset($_REQUEST['val2']) ? $_REQUEST['val2'] : null,
isset($_REQUEST['val3']) ? $_REQUEST['val3'] : null
);

$stmt->execute($params);

此外,您不应该对进入数据库的值进行 HTML 编码。当您在 HTML 文档中显示值时执行编码。

关于php - MySQL在使用$_REQUEST获取值后插入NULL值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9575854/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com