在 PHP/MySQL 中插入空值
将数据插入数据库时,正确处理空值至关重要。在这种情况下,如果数组中对应的值也为 null,我们希望将 null 插入到数据库字段中。
问题:
考虑以下代码:
$results = mysql_query("select * from mytable"); while ($row = mysql_fetch_assoc($results)) { mysql_query("insert into table2 (f1, f2) values ('{$row['string_field']}', {$row['null_field']}); }
当其中一个 null_field 值为 null 时,插入语句失败。这是因为 PHP 将 null 解释为空字符串,从而导致 SQL 查询中出现语法错误。
解决方案:
处理 null 值的推荐方法是使用准备好的语句。准备好的语句会自动区分 null 和空字符串,并插入正确的值。
$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)"); $stmt->bind_param('ss', $field1, $field2); $field1 = "String Value"; $field2 = null; $stmt->execute();
准备好的语句还可以通过转义值并确保查询格式正确来防止 SQL 注入攻击。因此,建议使用 mysqli 及其准备好的语句,而不是已弃用的 mysql 扩展。
以上是如何使用 PHP 正确地将 NULL 值插入 MySQL 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!