mysql数据库不能添加NULL值
数据都验证了,但是不能给数据添加NULL值,报错如下:
Column 'loumiandijia' cannot be null
其他数据在为空是用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');?>
代码太多 分开发
回复讨论(解决方案)
<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>
字段设置为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>'; } }
还有一个问题是我写入数据库后为空的值不少NULL而是里面是什么都没有,空的,这个和我看教程的不一样,教程里面空的值就是一个NULL,这是怎么回事?
是你插入的时候是null吧,我看你的表设计里面是都不能为null的你还传入这个那肯定会报错的。
是你插入的时候是null吧,我看你的表设计里面是都不能为null的你还传入这个那肯定会报错的。
默认是否不行吗?还要怎么设置
否的那列,就是表示 NULL,既然 NULL?定?否。你?NULL?去?然?啊。
你新的那??法?把null??''的,所以可以。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

Oracle不仅是数据库公司,还是云计算和ERP系统的领导者。1.Oracle提供从数据库到云服务和ERP系统的全面解决方案。2.OracleCloud挑战AWS和Azure,提供IaaS、PaaS和SaaS服务。3.Oracle的ERP系统如E-BusinessSuite和FusionApplications帮助企业优化运营。

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

SQL是一种用于管理关系数据库的标准语言,而MySQL是一个使用SQL的数据库管理系统。SQL定义了与数据库交互的方式,包括CRUD操作,而MySQL实现了SQL标准并提供了额外的功能,如存储过程和触发器。

文章首段摘要:在选择开发 Yi 框架应用程序的软件时,需要考虑多个因素。虽然原生移动应用程序开发工具(如 XCode 和 Android Studio)可以提供强大的控制和灵活性,但跨平台框架(如 React Native 和 Flutter)凭借其编写一次,即可部署到多个平台的优点而越来越受欢迎。对于刚接触移动开发的开发者,低代码或无代码平台(如 AppSheet 和 Glide)可以快速轻松地构建应用程序。另外,云服务提供商(如 AWS Amplify 和 Firebase)提供了全面的工具

Redis是一种内存数据结构存储系统,主要用作数据库、缓存和消息代理。它的核心特点包括单线程模型、I/O多路复用、持久化机制、复制与集群功能。 Redis在实际应用中常用于缓存、会话存储和消息队列,通过选择合适的数据结构、使用管道和事务、以及进行监控和调优,可以显着提升其性能。
