簡體   English   中英

PHP如何在數據庫中插入NULL?

[英]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'是一個字符串,其中包含文字字符null 用SQL術語來說,它們是完全不同的兩件事。

上面的代碼會產生

INSERT ... VALUES (null, ...)
INSERT ... VALUES ('Miles O\'Brien', ...)

嘗試這個:

$variable_name = "NULL";

現在,在插入數據庫時​​,使用$ variable_name。

那應該做。

編輯:如果將來要切換到PDO,則需要使用prepare語句,或者轉義用戶輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM