2015-02-06 48 views
0

我有一個正常的HTML文件,通過一個字符串。張貼到我的PHP文件,這將把這個MySQL數據庫。PHP如何在數據庫中插入NULL?

我該如何實現,我可以在數據庫中寫入「真實」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!"; 

?> 
+0

您是否在表單元素中輸入了單詞NULL? – 2015-02-06 16:07:45

+0

首先您需要確保將列設置爲空,如果是這樣,您可以在插入語句中寫入NULL。 – Gal 2015-02-06 16:07:50

+0

你需要切換到'PDO'或'MySQLi'準備好的語句! – cmorrissey 2015-02-06 16:08:04

回答

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轉義的文本被引號包圍。如果根本沒有文字,則添加字符串null。這歸結爲null'null'之間的差異。

null是一個sql null,「未知值」。 'null'是一個字符串,文字字符爲n,u,ll。用SQL來說,它們是兩個完全不同的東西。

上面的代碼會產生

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

我想要的空null :) – DominikTV 2015-02-06 16:10:50

+0

這正是這個代碼會做什麼。 – 2015-02-06 16:17:56

+0

年,這不是我想要的100%,但它的工作原理,謝謝:) – DominikTV 2015-02-06 16:26:41

0

試試這個:

$variable_name = "NULL"; 

現在,當插入數據庫,使用$變量名。

這應該做到這一點。

編輯:您需要使用準備語句,如果您將在未來切換到PDO或轉義用戶輸入。

相關問題