使用php更新到数据库

开发技术 作者: 2024-06-28 22:00:01
我使用它的唯一方法是使用空的.但是,这不是我想要的.如果必须的话,我希望能留下一些空的东西.有谁知道我应该如何更改代码才能工作? 编辑页面: <form name="homePage" action="update.php" method="POST"> <Strong>Change home title:</Strong> <p> <input style="width: 300px;"
我使用它的唯一方法是使用空的.但是,这不是我想要的.如果必须的话,我希望能留下一些空的东西.有谁知道我应该如何更改代码才能工作?

编辑页面:

<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>";
        }
    }
}

谢谢!

解决方法

前体:

>您已将连接脚本包含两次.
>您正在包含隐藏的表单字段< input type =“hidden”name =“rowHomeID”value =“<?PHP echo $getHomeID?>”>两次.这是低效的.
>您的表单应具有enctype =’multipart / form-data’. Read Here

没有看到你的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.

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_35211.html
使用 php 更新 数据库