PHP/MySQL 中的空值插入
将数据从一个 MySQL 表导入到另一个表时,插入空值可能会出现问题。如果数组值为空,并且对应的数据库字段允许空值,则插入可能会失败。
有问题的原始查询
<code class="php">$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']}); }</code>
解决方案:使用准备好的语句
准备好的语句为插入空值提供了便捷的解决方案。 MySQL 区分空字符串 (''") 和 null 值,因此在使用原始 SQL 查询时,需要显式 null 检查和引号。
但是,使用准备好的语句,MySQL 会自动处理这些区别,确保 null无论 PHP 数据类型如何,值都会正确插入。
<code class="php">$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)"); $stmt->bind_param('ss', $field1, $field2); $field1 = "String Value"; $field2 = null; // Null value will be inserted as is $stmt->execute();</code>
Prepared 的优点语句
因此,对于强烈建议在 PHP/MySQL 中使用准备好的语句插入空值,它可以简化代码,确保正确性,并提供额外的安全性和性能优势。
以上是如何在 PHP 中使用准备好的语句将空值插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!