【问题标题】:PHP MySQL Update queryPHP MySQL 更新查询
【发布时间】:2010-06-02 00:22:56
【问题描述】:

我有一个有更新查询的网站。示例。

表名 -> myTable 表格内容 -> id(AI) 名字 --> 我的名字 年龄 --> 13 图片 -->(无值) 生日->(无值)

我只在 nameage 中输入值。在 imagebirthdate 中,我什么都没放。
如果我编辑它并更新它并且我没有在 nameage 中添加任何内容,我只会在 imageimage 中添加值强>生日。输出是这样的。 (我想要的这个输出)

表名 -> myTable 表格内容 -> id(AI) 名字 --> 我的名字 年龄 --> 13 图片 --> myImage.jpg 生日 --> 2010 年 2 月 31 日


这是我的代码:

我使用了这段代码,但输出是:

表名 -> myTable 表格内容 -> id(AI) 名称 --> (无值) 年龄->(无值) 图片 --> myImage.jpg 生日 --> 2010 年 2 月 31 日


如果您不理解我的问题,请随时提出
谢谢

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    如果您不在UPDATE 语句中包含新值,UPDATE 将保留列。

    因此,您可能需要使用一些条件代码来构建$sql 变量,以检查用户输入的内容,然后仅在用户为其提供值时才包含一列。

    <?php
    
    $columns = array("name", "age", "image", "birthdate");
    $set = array();
    foreach ($columns as $col) {
        if (isset($_GET[$col])) {
          $set[] = "$col = '" . mysql_real_escape_string($_GET[$col]) . "'";
        }
    }
    $sql = "UPDATE myTable "
    if ($set) {
        $sql .= " SET " . implode(",", $set);
    }
    $sql .= " WHERE id = " . (int) $id;
    

    【讨论】:

    • 谢谢。这就是我需要的。
    • 最好使用!empty($_GET[$col]) 而不是isset。如果表单具有固定输入(例如:输入未动态添加或禁用),则空输入将被视为提供了新值。
    【解决方案2】:

    你的代码有错误--

    $sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate"'$birthdate.."' WHERE id = $id"
    

    应改为:

    $sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate = '".$birthdate."' WHERE id = $id"
    

    但这可能只是一个错字。您确定变量设置正确吗?尝试回显所有变量以确保。此外,请检查列是否没有默认数据定义。

    【讨论】:

    • 打败我:birthdate"'$birthdate.."'
    • 谢谢。 ^^。我忘记了等号。
    【解决方案3】:

    只需有两个单独的查询:

    // update name and age
    $sql = "UPDATE myTable SET name = '$name', age = '$age' WHERE id = '$id'";
    
    // Update image and birthday
    $sql = "UPDATE myTable SET image = '$image', birthdate = '$birthdate' WHERE id = '$id'";
    

    此外,您可以将所有变量放在字符串中,因为它是双引号。

    【讨论】:

      【解决方案4】:

      如果您不想更改字段,请不要将其包含在更新查询中。

      【讨论】:

        【解决方案5】:

        我个人认为这样的查询并不那么可靠,尤其是涉及到类型转换等时。

        我建议你尝试实现 PDO 或其他东西。

        http://php.net/manual/en/book.pdo.php

        否则,错误是birthdate'".$birthdate."' 女巫需要是birthdate = '".$birthdate."'

        【讨论】:

          猜你喜欢
          • 2012-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-03
          • 2013-05-21
          • 2011-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多