从javascript字典插入到mysql,php为空值

从javascript字典插入到mysql,php为空值,javascript,php,mysql,dictionary,Javascript,Php,Mysql,Dictionary,你好 我试图做的是从字典(JSON字符串,无论什么)向mysql数据库插入一个空值。在控制台上很明显,我的数据值为null,但插入时失败。我努力在php上编写空代码,结果成功了。我想知道,当空值来自字典时,它为什么会返回错误 例1: $query=“INSERT INTO table(field1)VALUES(“.$data['item'])”更多详细信息会有很大帮助,但最好的猜测是因为PHP将null转换为空字符串,所以您正在构建此查询: $query = "INSERT INTO tabl

你好

我试图做的是从字典(JSON字符串,无论什么)向mysql数据库插入一个空值。在控制台上很明显,我的数据值为null,但插入时失败。我努力在php上编写空代码,结果成功了。我想知道,当空值来自字典时,它为什么会返回错误

例1:


$query=“INSERT INTO table(field1)VALUES(“.$data['item'])”更多详细信息会有很大帮助,但最好的猜测是因为PHP将null转换为空字符串,所以您正在构建此查询:

$query = "INSERT INTO table (field1) VALUES ()";
这将正确地给您一个SQL错误。试试这个:

$query = "INSERT INTO table (field1) VALUES (" . ( is_null( $data['item'] ) ? 'null' : $data['item'] ) . ")";

此外,您可能容易受到攻击。您应该始终使用准备好的查询。

现在我明白了。值NULL为=到“”,因为它实际上不包含任何内容(“”)。但是当我在NULL这个词前后加上撇号时,它会在我的查询中打印NULL这个词。只是一些小错误

你检查过var_dump($data['item'])
了吗?哇,非常感谢。现在我尝试创建一个日志,它显示php将其转换为“”(空字符串)。嗯,即使我过滤整个json,如果它有撇号,它将乘以2,以便mysql可以注册用户的输入,我仍然容易受到攻击吗?或者你有什么建议来防止这种情况?我计划使用mysqli为所有内容创建存储函数。这足够好吗?你最好的办法是问一些关于信息安全的问题:一如既往,确保并提供大量有关信息安全的详细信息,以便彻底回答你的问题。SQL注入是一个复杂的话题,是一个常见的安全漏洞,黑客会主动进行扫描。绝对值得学习。我想说的是保持简单:强大的输入过滤、准备好的查询、白名单动态查询。存储函数也容易受到SQL注入的攻击,因此也要仔细检查它们。
$query = "INSERT INTO table (field1) VALUES ()";
$query = "INSERT INTO table (field1) VALUES (" . ( is_null( $data['item'] ) ? 'null' : $data['item'] ) . ")";