有一張user表如下所示:字段name不能為空。
CREATE TABLE ` user ` ( `id` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` char ( 20 ) NOT NULL , `age` int ( 11 ) DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE = MyISAM DEFAULT CHARSET = utf8
現在在命令行上執行以下兩條命令:
mysql> insert into user(name,age) value(null,null);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into user(name,age) value('',null);
Query OK, 1 row affected (0.00 sec)
mysql> insert into user(name,age) value("",null);
Query OK, 1 row affected (0.00 sec)
可以看出,當name為null時系統會提示錯誤,當name為 '' 和 "" 時就插入成功了。可以看出mysql不會把空字符串當作NULL來對待的。
對于PHP客戶端向數據庫中插入一條記錄:(沒有對表單字段進行一個邏輯判斷)
<? php if (! empty ( $_POST ['submit' ])){ require_once ('MysqlTool.class.php' ); $mysqli = new MysqlTool(); $name = $_POST ['name' ]; $age = $_POST ['age' ]; $sql ="insert into user(name,age) values(' $name ', $age )" ; echo $mysqli ->execute_dql( $sql ); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post"> Name :<input type="text" name="name"/><br/> Age :<input type="text" name="age"/><br/> <input type="submit" value="Submit" name="submit"/> </form> </body> </html>
當我什么也不輸入直接提交是可以提交成功的。主要是我們的sql語句的問題:
$sql = " insert into user (name,age) values ( ' $name ' ,$age)";
如果我們沒有在表單里填寫數據,$name就是空,但是我們的sql語句對$name加上了單引號,此時對于mysql數據庫就是一個空字符串而不是NULL,所以數據庫不是報錯。
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
