PHP如何在数据库中插入NULL?

时间:2015-02-06 16:05:04

标签: php html mysql

我有一个普通的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!";

?>

2 个答案:

答案 0 :(得分:2)

您需要预处理文字。由于你很容易受到sql injection attacks的攻击,因此这应该被认为是强制性的:

if (isset($_POST['text']) && !empty($_POST['text'])) {
   $safetext = "'" . mysql_real_escape_string($_POST['text']) . "'";
} else {
   $safetext = 'null';
}

$sql = "INSERT ... VALUES ($safetext, ...)";

注意如何在if()内添加引号。如果有一些文本需要完成,则sql-escaped文本被引号括起来。如果根本没有文字,则添加字符串null。这归结为null'null'之间的差异。

null是一个sql null,&#34;未知值&#34;。 'null'是一个字符串,其中包含文字字符null。在SQL术语中,它们是两个完全不同的东西。

上面的代码会生成

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

答案 1 :(得分:0)

试试这个:

$variable_name = "NULL";

现在,在插入数据库时​​,请使用$ variable_name。

应该这样做。

编辑:如果您将来要切换到PDO或者逃避用户输入,您需要使用准备语句。