Inhaltsverzeichnis
回复讨论(解决方案)
Heim Backend-Entwicklung PHP-Tutorial mysql数据库不能添加NULL值

mysql数据库不能添加NULL值

Jun 23, 2016 pm 01:48 PM
mysql null 数据库 添加

数据都验证了,但是不能给数据添加NULL值,报错如下:

Column 'loumiandijia' cannot be null
Nach dem Login kopieren

其他数据在为空是用NULL都不行

代码如下
<?phprequire ('inc/config.php');$page_title = '住宅数据添加-feige数据中心';include ('inc/header.php');require (MYSQL);if ($_SERVER['REQUEST_METHOD'] == 'POST') {		$trimmed = array_map('trim', $_POST);	$errors = array();	if (!empty($trimmed['tudi_id'])) {		$tudi_id = mysqli_real_escape_string ($conn, $trimmed['tudi_id']);	} else {		$errors[] = '地块编号不能为空';	}		if ( isset($trimmed['city']) && filter_var($trimmed['city'], FILTER_VALIDATE_INT, array('city' => 1)) ) {		$city = mysqli_real_escape_string ($conn, $trimmed['city']);;	} else {		$errors[] = '请选择区域';	}	$weizhi = (!empty($trimmed['weizhi'])) ? mysqli_real_escape_string ($conn, $trimmed['weizhi']) : NULL;	$yongtu = (!empty($trimmed['yongtu'])) ? mysqli_real_escape_string ($conn, $trimmed['yongtu']) : NULL;	$rongjilv = (!empty($trimmed['rongjilv'])) ? mysqli_real_escape_string ($conn, $trimmed['rongjilv']) : NULL;	$midu = (!empty($trimmed['midu'])) ? mysqli_real_escape_string ($conn, $trimmed['midu']) : NULL;	$lvdi = (!empty($trimmed['lvdi'])) ? mysqli_real_escape_string ($conn, $trimmed['lvdi']) : NULL;		if(empty($trimmed['fabu_time'])) {		$errors[] = '发布日期不能为空';	} else {		$fabu_time = mysqli_real_escape_string ($conn, $trimmed['fabu_time']);	}	if(empty($trimmed['chengjiao_time'])) {		$errors[] = '成交日期不能为空';	} else {		$chengjiao_time = mysqli_real_escape_string ($conn, $trimmed['chengjiao_time']);	}	if(empty($trimmed['jiezhi_time'])) {		$errors[] = '保证金截止时间不能为空';	} else {		$jiezhi_time = mysqli_real_escape_string ($conn, $trimmed['jiezhi_time']);	}		if (is_numeric($trimmed['baozhengjin']) && ($trimmed['baozhengjin'] > 0)) {		$baozhengjin = mysqli_real_escape_string ($conn, (float) $trimmed['baozhengjin']);	} else {		$errors[] = '请输入一个正确的竞买保证金(万元)';	}	if (is_numeric($trimmed['mianji_m']) && ($trimmed['mianji_m'] > 0)) {		$mianji_m = mysqli_real_escape_string ($conn, (float) $trimmed['mianji_m']);	} else {		$errors[] = '请输入一个正确的占地面积(亩)';	}	if (is_numeric($trimmed['mianji_p']) && ($trimmed['mianji_p'] > 0)) {		$mianji_p = mysqli_real_escape_string ($conn, (float) $trimmed['mianji_p']);	} else {		$errors[] = '请输入一个正确的占地面积';	}	if (is_numeric($trimmed['guihua_p']) && ($trimmed['guihua_p'] > 0)) {		$guihua_p = mysqli_real_escape_string ($conn, (float) $trimmed['guihua_p']);	} else {		$errors[] = '请输入一个正确的规划建筑面积';	}	if (is_numeric($trimmed['qipaijia']) && ($trimmed['qipaijia'] > 0)) {		$qipaijia = mysqli_real_escape_string ($conn, (float) $trimmed['qipaijia']);	} else {		$errors[] = '请输入一个正确的起拍价(万/亩)';	}	$chengjiaodanjia = (!empty($trimmed['chengjiaodanjia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['chengjiaodanjia']) : NULL;	$chengjiazongjia = (!empty($trimmed['chengjiazongjia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['chengjiazongjia']) : NULL;	$loumiandijia = (!empty($trimmed['loumiandijia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['loumiandijia']) : NULL;	$yijialv = (!empty($trimmed['yijialv'])) ? mysqli_real_escape_string ($conn, $trimmed['yijialv']) : NULL;	$jingderen = (!empty($trimmed['jingderen'])) ? mysqli_real_escape_string ($conn, $trimmed['jingderen']) : NULL;	$churang_p = (!empty($trimmed['churang_p'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['churang_p']) : NULL;	$dituweizhi = (!empty($trimmed['dituweizhi'])) ? mysqli_real_escape_string ($conn, $trimmed['dituweizhi']) : NULL;	$xuzhi = (!empty($trimmed['xuzhi'])) ? mysqli_real_escape_string ($conn, $trimmed['xuzhi']) : NULL;	if ( isset($trimmed['is_cheng']) && is_numeric($trimmed['is_cheng']) && ($trimmed['is_cheng'] >= 0) ) {		$is_cheng = mysqli_real_escape_string ($conn, $trimmed['is_cheng']);;	} else {		$errors[] = '请选择交易是否成功';	}			if (empty($errors)) {		$q = 'INSERT INTO f_tudi (tudi_id, city_id, weizhi, yongtu, rongjilv, midu, lvdi, fabu_time, chengjiao_time, jiezhi_time, baozhengjin, mianji_m, mianji_p, guihua_p, qipaijia, chengjiaodanjia, chengjiazongjia, loumiandijia, yijialv, jingderen, churang_p, dituweizhi, xuzhi, is_cheng) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';		$stmt = mysqli_prepare($conn, $q);		mysqli_stmt_bind_param($stmt, 'iissssssssdddddddddsdssi', $tudi_id, $city, $weizhi, $yongtu, $rongjilv, $midu, $lvdi, $fabu_time, $chengjiao_time, $jiezhi_time, $baozhengjin, $mianji_m, $mianji_p, $guihua_p, $qipaijia, $chengjiaodanjia, $chengjiazongjia, $loumiandijia, $yijialv, $jingderen, $churang_p, $dituweizhi, $xuzhi, $is_cheng);		mysqli_stmt_execute($stmt);		if (mysqli_stmt_affected_rows($stmt) == 1) {			echo '这条数据已经添加成功';			$_POST = array();			} else {			echo '<p style="font-weight: bold; color: #C00">程序发生错误,请重新添加</p>'; 			echo '<p>' . mysqli_stmt_error ($stmt) . '</p>';		}			mysqli_stmt_close($stmt);		}			} if ( !empty($errors) && is_array($errors) ) {	echo '<p style="font-weight: bold; color: #C00">发生下列错误:<br />';	foreach ($errors as $msg) {		echo " - $msg<br />\n";	}	echo '请在试一遍</p>';}?><?phpinclude ('inc/footer.php');?>
Nach dem Login kopieren


代码太多 分开发


回复讨论(解决方案)

<div class="portlet wrap mT50">	<div class="portlet-title">土地数据添加</div>	<div class="portlet-body">	<form action="tudi_add.php" method="post">		<div class="control-group">			<label class="control-label">地块编号</label>			<div class="controls">				<input type="text" name="tudi_id" class="add-in" value="" />例子:DAEJ2014054			</div>		</div> 		        <div class="control-group">			<label class="control-label">区域</label>			<div class="controls">				<select name="city" class="select-city">                    <?php 					$q = "SELECT city_id, city_name FROM f_city ORDER BY city_id ASC";							$r = mysqli_query ($conn, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($conn));					if (@mysqli_num_rows($r) > 0) {						while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {							echo "<option value=\"$row[0]\"";							if (isset($trimmed['city']) && ($trimmed['city'] == $row[0]) ) echo ' selected="selected"';							echo ">$row[1]</option>\n";						}						mysqli_free_result ($r);					} else {						echo '<option>暂无区域,请添加一个新地区</option>';					}					mysqli_close($conn);					?>				</select>			</div>		</div>		<div class="control-group">			<label class="control-label">地块位置</label>			<div class="controls">				<input type="text" name="weizhi" class="add-in w600" value="" />			</div>		</div> 		        <div class="control-group">			<label class="control-label">土地用途</label>			<div class="controls">				<input type="text" name="yongtu" class="add-in" value="" />例子:商业、商务、娱乐康体、居住用地			</div>		</div>         <div class="control-group">			<label class="control-label">容积率(FAR)</label>			<div class="controls">				<input type="text" name="rongjilv" class="add-in" value="" />例子:1.0<FAR≤2.273			</div>		</div>         <div class="control-group">			<label class="control-label">建筑密度(D)</label>			<div class="controls">				<input type="text" name="midu" class="add-in" value="" />例子:D≤30.46%			</div>		</div>        <div class="control-group">			<label class="control-label">绿地率(GAR)</label>			<div class="controls">				<input type="text" name="lvdi" class="add-in" value="" />例子:GAR≥30%			</div>		</div>		<div class="control-group">			<label class="control-label">发布日期</label>			<div class="controls">				<input type="text" name="fabu_time" class="add-in" onClick="WdatePicker()" value="" />时间格式例如:2014-12-12			</div>		</div> 		<div class="control-group">			<label class="control-label">成交日期</label>			<div class="controls">				<input type="text" name="chengjiao_time" class="add-in" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" />时间格式例如:2014-12-12 10:00:00			</div>		</div> 		<div class="control-group">			<label class="control-label">保证金截止时间</label>			<div class="controls">				<input type="text" name="jiezhi_time" class="add-in" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" />时间格式例如:2014-12-12 15:00:00			</div>		</div>         <div class="control-group">			<label class="control-label">竞买保证金(万元)</label>			<div class="controls">				<input type="text" name="baozhengjin" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>        <div class="control-group">			<label class="control-label">占地面积(亩)</label>			<div class="controls">				<input type="text" name="mianji_m" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">占地面积(?)</label>			<div class="controls">				<input type="text" name="mianji_p" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">规划建筑面积(?)</label>			<div class="controls">				<input type="text" name="guihua_p" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">起拍价(万/亩)</label>			<div class="controls">				<input type="text" name="qipaijia" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">成交单价(万/亩)</label>			<div class="controls">				<input type="text" name="chengjiaodanjia" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">成交总地价(万元)</label>			<div class="controls">				<input type="text" name="chengjiazongjia" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">楼面地价</label>			<div class="controls">				<input type="text" name="loumiandijia" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>	        <div class="control-group">			<label class="control-label">溢价率</label>			<div class="controls">				<input type="text" name="yijialv" class="add-in" value="" />百分比数字			</div>		</div>	        <div class="control-group">			<label class="control-label">竞得人</label>			<div class="controls">				<input type="text" name="jingderen" class="add-in w600" value="" />			</div>		</div>	        <div class="control-group">			<label class="control-label">起始价(万元)</label>			<div class="controls">				<input type="text" name="churang_p" class="add-in" value="" />直接填写数字,不要带上单位			</div>		</div>        <div class="control-group">			<label class="control-label">地图位置</label>			<div class="controls">				<input type="text" name="dituweizhi" id="dituweizhi" readonly="readonly" class="add-in w600" /> <a href="javascript:;" id="up">上传</a>			</div>		</div>	        <div class="control-group">			<label class="control-label">出让须知</label>			<div class="controls">				<textarea name="xuzhi" cols="150" rows="10" class="add-in"></textarea> 			</div>		</div>			        <div class="control-group">			<label class="control-label">交易是否成功</label>			<div class="controls">				<select name="is_cheng" class="select-city">						<option value="0">暂未交易</option>						<option value="1">成功交易</option>							<option value="2">流拍</option>												</select>			</div>		</div>		        <div class="form-actions">            <button class="btn" name="submit" type="submit">提交</button>	   	</div>   	</form>    </div></div>
Nach dem Login kopieren

字段设置为not null了吧
$loumiandijia = (!empty($trimmed['loumiandijia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['loumiandijia']) : NULL;

改为
$loumiandijia = (!empty($trimmed['loumiandijia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['loumiandijia']) : ‘’;
试试

字段设置为not null了吧
$loumiandijia = (!empty($trimmed['loumiandijia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['loumiandijia']) : NULL;

改为
$loumiandijia = (!empty($trimmed['loumiandijia'])) ? mysqli_real_escape_string ($conn, (float) $trimmed['loumiandijia']) : ‘’;
试试


没有设置字段设置为not null
你看下表

但是我换了一个写法就可以写入数据库,这是怎么回事?
	if (empty($errors)) {		$q = "INSERT INTO f_tudi (tudi_id, city_id, weizhi, yongtu, rongjilv, midu, lvdi, fabu_time, chengjiao_time, jiezhi_time, baozhengjin, mianji_m, mianji_p, guihua_p, qipaijia, chengjiaodanjia, chengjiazongjia, loumiandijia, yijialv, jingderen, churang_p, dituweizhi, xuzhi, is_cheng) VALUES ('$tudi_id', '$city', '$weizhi', '$yongtu', '$rongjilv', '$midu', '$lvdi', '$fabu_time', '$chengjiao_time', '$jiezhi_time', '$baozhengjin', '$mianji_m', '$mianji_p', '$guihua_p', '$qipaijia', '$chengjiaodanjia', '$chengjiazongjia', '$loumiandijia', '$yijialv', '$jingderen', '$churang_p', '$dituweizhi', '$xuzhi', '$is_cheng')";		$r = mysqli_query ($conn, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($conn));		if (mysqli_affected_rows($conn) == 1) {			echo '这条数据已经添加成功';			$_POST = array();			} else {			echo '<p style="font-weight: bold; color: #C00">程序发生错误,请重新添加</p>'; 		}			}
Nach dem Login kopieren


还有一个问题是我写入数据库后为空的值不少NULL而是里面是什么都没有,空的,这个和我看教程的不一样,教程里面空的值就是一个NULL,这是怎么回事?

是你插入的时候是null吧,我看你的表设计里面是都不能为null的你还传入这个那肯定会报错的。

是你插入的时候是null吧,我看你的表设计里面是都不能为null的你还传入这个那肯定会报错的。


默认是否不行吗?还要怎么设置

否的那列,就是表示 NULL,既然 NULL?定?否。你?NULL?去?然?啊。

你新的那??法?把null??''的,所以可以。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie optimiert man die MySQL-Abfrageleistung in PHP? Wie optimiert man die MySQL-Abfrageleistung in PHP? Jun 03, 2024 pm 08:11 PM

Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Jun 03, 2024 pm 12:19 PM

Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Jun 02, 2024 pm 02:26 PM

Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 Dec 09, 2024 am 11:42 AM

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Jun 02, 2024 pm 02:13 PM

So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.

Wie erstelle ich eine MySQL-Tabelle mit PHP? Wie erstelle ich eine MySQL-Tabelle mit PHP? Jun 04, 2024 pm 01:57 PM

Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.

Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Jun 04, 2024 pm 01:42 PM

So verwenden Sie MySQLi zum Herstellen einer Datenbankverbindung in PHP: MySQLi-Erweiterung einbinden (require_once) Verbindungsfunktion erstellen (functionconnect_to_db) Verbindungsfunktion aufrufen ($conn=connect_to_db()) Abfrage ausführen ($result=$conn->query()) Schließen Verbindung ( $conn->close())

iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen Jul 18, 2024 am 05:48 AM

Apples neueste Versionen der iOS18-, iPadOS18- und macOS Sequoia-Systeme haben der Fotoanwendung eine wichtige Funktion hinzugefügt, die Benutzern dabei helfen soll, aus verschiedenen Gründen verlorene oder beschädigte Fotos und Videos einfach wiederherzustellen. Mit der neuen Funktion wird im Abschnitt „Extras“ der Fotos-App ein Album mit dem Namen „Wiederhergestellt“ eingeführt, das automatisch angezeigt wird, wenn ein Benutzer Bilder oder Videos auf seinem Gerät hat, die nicht Teil seiner Fotobibliothek sind. Das Aufkommen des Albums „Wiederhergestellt“ bietet eine Lösung für Fotos und Videos, die aufgrund einer Datenbankbeschädigung verloren gehen, die Kameraanwendung nicht korrekt in der Fotobibliothek speichert oder eine Drittanbieteranwendung die Fotobibliothek verwaltet. Benutzer benötigen nur wenige einfache Schritte

See all articles