[英]PHP How to insert NULL in Database?
我有一個普通的HTML文件,可以通過它提供字符串。 POST至我的PHP文件,將其放入MySQL數據庫。
如何實現可以在數據庫中寫入“真實” NULL
而不是“”(空字符串)之類的東西?
MySQL欄可為空。
我的表格:
<form method="post" action="putInDatabase.php">
<label>Text</label>
<textarea name="text" ></textarea>
<label>Picture URL (optional)</label>
<input name="image" />
<br>
<input id="submit" name="submit" type="submit" value="submit">
</form>
我的PHP文件:
<?php
$text = "";
$image = null;
if (isset($_POST["submit"]))
{
$text = $_POST["text"];
$image = $_POST["image"];
}
$text = strtr ($text, array ('"' => '\"'));
$con = mysql_connect("censored :)");
if (!$con)
{
die('ERROR' . mysql_error());
}
mysql_select_db("_DATABASE_HERE_", $con);
$insertSQL = "INSERT INTO `_DATABASE_HERE_`.`_NAME_HERE_` (`Text`, `PictureURL`) VALUES ('$text', '$image ');";
$res = mysql_query($insertSQL);
$res = mysql_query($sql);
mysql_close($con);
echo "Success!";
?>
您需要預處理文本。 並且由於您很容易受到sql注入攻擊,因此應將其視為強制性的:
if (isset($_POST['text']) && !empty($_POST['text'])) {
$safetext = "'" . mysql_real_escape_string($_POST['text']) . "'";
} else {
$safetext = 'null';
}
$sql = "INSERT ... VALUES ($safetext, ...)";
注意如何在if()
內添加引號。 如果要完成一些文本,則用sql轉義的文本會用引號引起來。 如果根本沒有文本,則添加字符串null
。這歸結為null
和'null'
之間的區別。
null
是sql null,即“未知值”。 'null'
是一個字符串,其中包含文字字符n
, u
, l
和l
。 用SQL術語來說,它們是完全不同的兩件事。
上面的代碼會產生
INSERT ... VALUES (null, ...)
INSERT ... VALUES ('Miles O\'Brien', ...)
嘗試這個:
$variable_name = "NULL";
現在,在插入數據庫時,使用$ variable_name。
那應該做。
編輯:如果將來要切換到PDO,則需要使用prepare語句,或者轉義用戶輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.