使用php更新到数据库
我使用它的唯一方法是使用空的.但是,这不是我想要的.如果必须的话,我希望能留下一些空的东西.有谁知道我应该如何更改代码才能工作?
编辑页面: <form name="homePage" action="update.php" method="POST"> <Strong>Change home title:</Strong> <p> <input style="width: 300px;" type="text" name="homeTitleChange" value="<?php echo $homeTitle ?>"> <input type="hidden" name="rowHomeID" value="<?php echo $getHomeID?>"> </p> <Strong>Change home subtitle:</Strong> <p> <input style="width: 600px;" type="text" name="homeSubtitleChange" value="<?php echo $homeSubtitle ?>"> <input type="hidden" name="rowHomeID" value="<?php echo $getHomeID?>"> </p> <input type="submit" class="btn btn-skin" name="homepage" value="save" /> </form> 查询页面: – include("../conn.php"); include("../conn.php"); if(isset($_POST['homepage'])){ if( !empty($_POST["homeTitleChange"])&& !empty($_POST["homeSubtitleChange"]) && !empty($_POST["rowHomeID"]) ){ $homeTitleUpdate = $_POST["homeTitleChange"]; $homeSubtitleUpdate = $_POST["homeSubtitleChange"]; $homeEditRow = $_POST["rowHomeID"]; $query = "UPDATE Home SET title = '$homeTitleUpdate',subtitle ='$homeSubtitleUpdate' WHERE homeID = '$homeEditRow' "; $result = mysqli_query($conn,$query) or die(mysqli_error($conn)); if ($result) { echo "<p> - Success!</p>"; }else{ echo "<p> - Something went wrong</p>"; } } } 谢谢! 解决方法
前体:
>您已将连接脚本包含两次. 没有看到你的MySQL错误我们无法绝对诊断你的问题,所以相反我会给你我知道需要修复的部分: 默认情况下,PHP字符串类型将保留空字符串”而不是NULL值,因此我认为您的问题不是错误地插入空值(至少,不是您的问题中描述的). $homeEditRow是唯一需要的值.因为UPDATE表SET列=值WHERE列=<空>将导致错误(或至少,没有更新). 因此替换: if( !empty($_POST["homeTitleChange"])&& !empty($_POST["homeSubtitleChange"]) && !empty($_POST["rowHomeID"]) ) 有: if(!empty($_POST["rowHomeID"]){ //run MySQL Update query. } 此外,如果该值是一个整数,您可以简单地执行此操作: $homeEditRow = (int)$_POST['rowHomeID']; //force to int. if($homeEditRow > 0 ){ //run MySQL Update query. } 如果您愿意,您的其他两个值可以为空,那很好. 但是这些值不能包含的是MySQL中未转义的特殊字符,通常(但绝不是唯一的)`,’,–,#字符. 因此,最好从用户输入中清除不安全的字符. 从未相信用户输入是“安全的” $homeTitleUpdate = mysqli_real_escape_string($conn,$_POST["homeTitleChange"]); $homeSubtitleUpdate = mysqli_real_escape_string($conn,$_POST["homeSubtitleChange"]); //assuming to be integer required $homeEditRow = (int)$_POST["rowHomeID"]; 这意味着任何单引号或其他不安全字符都不会干扰您的查询执行.使用Prepared语句比这种方法更安全,并且是推荐的做这些方法的方法,你可以使用PDO or MySQLi,这些系统的Stack Overflow上有许多很好的例子. 如果达到这一点并且您仍然遇到问题,那么您需要阅读MySQL错误输出对您说的内容: //after your query regardless of outcome: var_dump(mysqli_error($conn)); 您可能遇到一些问题,例如您有一个主索引列,其中包含两个非唯一值(等等).但是在您输出MySQL错误之前我们不会确定. 最后,要小心你的IF语句检查是否执行了更新查询,因为如果没有任何更改,则没有更新更新,MySQL将不会运行查询,因此当事实上一切正常运行时可能会返回false. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |