php - 简单的 SQL 更新语句语法

标签 php mysql

尝试使用 PHP 更新我的 MySQL 数据库中的记录。我是一名 PHP 菜鸟,所以我假设我遗漏了一些明显的东西。

我的新代码 (update-task.php) - 它提交并重定向,但记录未更新。

<?php
$data = array(
    'id' => $_POST['id'],
    'TaskName' => $_POST['TaskName'],
    'ClientName' => $_POST['ClientName'],
    'AssignedTo' => $_POST['AssignedTo'],
    'DueDate' => $_POST['DueDate'],
    'TimeLogged' => $_POST['TimeLogged'],
    'Notes' => $_POST['Notes'],
    'Urgent' => $_POST['Urgent']
);

require('mysql.php');
$db = new mysql;
$db->connect('localhost', 'my_user', 'my_pass;', 'my_db');
$db->query("UPDATE `my_table` SET TaskName='" . mysql_real_escape_string($data['TaskName']) . "',
    ClientName='" . mysql_real_escape_string($data['ClientName']) . "',
    AssignedTo='" . mysql_real_escape_string($data['AssignedTo']) . "',
    DueDate='" . mysql_real_escape_string($data['DueDate']) . "',
    TimeLogged='" . mysql_real_escape_string($data['TimeLogged']) . "',
    Notes='" . mysql_real_escape_string($data['Notes']) . "',
    Urgent='" . mysql_real_escape_string($data['Urgent']) . "' WHERE id='" . mysql_real_escape_string($data['id']) . "'
");

header('Location:saved.htm');

我的表单如下所示(view-task.php)

<?php
$id = $_GET['id'];
require('mysql2.php');
$db = new mysql;
$db->connect('localhost', 'my_user', 'my_pass;', 'my_db');
$query = $db->query("SELECT * FROM `table_name` WHERE id = '" . $id ."'");
while($result = $db->fetch_array($query)) {
    $data = $result;
}
?>

<form action="update-task.php" method="post" id="form1" name="form1">

    <label>Task Name:</label>
    <input name="TaskName" type="text" id="TaskName" size="30" value="<?php echo $data['TaskName']?>"/>

    <label>Client</label>
    <input name="ClientName" type="text" id="ClientName" size="30" value="<?php echo $data['ClientName']?>"/>

    <label>Assigned To</label>
    <input name="AssignedTo" type="text" id="AssignedTo" size="30" value="<?php echo $data['AssignedTo']?>"/>

    <label>Due Date</label>
    <input name="DueDate" type="text" id="DueDate" size="30" value="<?php echo $data['DueDate']?>"/>

    <label>Time Logged</label>
    <input type="button" value="Start Count" onClick="timedCount()">
    <input type="text" value="<?php echo $data['TimeLogged']?>" id="TimeLogged" name="TimeLogged">
    <input type="button" value="Stop Count" onClick="stopCount()">
    <input type="button" value="Clear Timer" onClick="clearTimer()">

    <label>Notes</label>
    <input name="Notes" type="textarea" id="Notes" size="30" value="<?php echo $data['Notes']?>"/>

    <label>Urgent</label>
    <input name="Urgent" type="text" id="Urgent" size="30" value="<?php echo $data['Urgent']?>"/>

    <input type="submit" value="Update" class="AddButton">

</form>

mysql.php的内容

<?php
class mysql {
    var $querynum = 0;
    var $querylist = '';

    function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect=0) {
        $die = false;

        if($pconnect) {
            @mysql_pconnect($dbhost, $dbuser, $dbpw) or ($die = true);
        } else {
            @mysql_connect($dbhost, $dbuser, $dbpw) or ($die = true);
        }

        if($die) {
            die(mysql_error());
        }

        mysql_select_db($dbname) or die(mysql_error());
    }

    function fetch_array($query, $type=MYSQL_ASSOC) {
        $query = mysql_fetch_array($query, $type);
        return $query;
    } 

    function query($sql) {
        $query = mysql_query($sql) or die(mysql_error());
        $this->querynum++;
        $this->querylist .= "$sql <br />";
        return $query;
    }

    function result($query, $row) {
        $query = mysql_result($query, $row);
        return $query;
    }

    function num_rows($query) {
        $query = mysql_num_rows($query);
        return $query;
    }

    function insert_id() {
        $id = mysql_insert_id();
        return $id;
    }

    function fetch_row($query) {
        $query = mysql_fetch_row($query);
        return $query;
    }
    function affected_rows() {
        $query = mysql_affected_rows();
        return $query;
    }
    function close() {
        mysql_close();
    }
}


?>

最佳答案

如果您正在更新数据,那么您就有uniq id,请发布来自mysql.php的代码 mysql更新查询的工作方式为“UPDATEmy_tableSET WHERE id='1'”看起来您有一个查询错误

   <?php

$data = array(
    'id' => $_POST['id']
    'TaskName' => $_POST['TaskName'],
    'ClientName' => $_POST['ClientName'],
    'AssignedTo' => $_POST['AssignedTo'],
    'DueDate' => $_POST['DueDate'],
    'TimeLogged' => $_POST['TimeLogged'],
    'Notes' => $_POST['Notes'],
    'Urgent' => $_POST['Urgent']
);

require('mysql.php');
$db = new mysql();
$db->connect('localhost', 'my_user', 'my_pass;', 'my_db');
$db->query("UPDATE `my_table` SET TaskName='" . mysql_real_escape_string($data['TaskName']) . "',
    ClientName='" . mysql_real_escape_string($data['ClientName']) . "',
    AssignedTo='" . mysql_real_escape_string($data['AssignedTo']) . "',
    DueDate='" . mysql_real_escape_string($data['DueDate']) . "',
    TimeLogged='" . mysql_real_escape_string($data['TimeLogged']) . "',
    Notes='" . mysql_real_escape_string($data['Notes']) . "',
    Urgent='" . mysql_real_escape_string($data['Urgent']) . "' WHERE id='" . mysql_real_escape_string($data['id']) . "'
)");
header('Location:saved.htm');

?>

表格

<?php
$data['id'] = $_GET['id'];
require('mysql.php');
$db = new mysql();
$db->connect('localhost', 'my_user', 'my_pass;', 'my_db');
$query = $db->query("SELECT * FROM `my_table` WHERE id = '" . $data['id'] ."'");
while($result = $db->fetch_array($query)) {
    $data = array_merge($data, $result);
}
?>


<form action="update-task.php" method="post">

    <label>Task Name:</label>
    <input name="TaskName" type="text" id="TaskName" size="30" value="<?= $data['TaskName']?>"/>

    <label>Client</label>
    <input name="ClientName" type="text" id="ClientName" size="30" value="<?= $data['ClientName']?>"/>

    <label>Assigned To</label>
    <input name="AssignedTo" type="text" id="AssignedTo" size="30" value="<?= $data['AssignedTo']?>"/>

    <label>Due Date</label>
    <input name="DueDate" type="text" id="DueDate" size="30" value="<?= $data['DueDate']?>"/>

    <input name="id" type="hidden" id="id" value="<?= $data['id']?>"/>

    <label>Time Logged</label>
    <input type="button" value="Start Count" onClick="timedCount()">
    <input type="text" value="<?= $data['TimeLogged']?>" id="TimeLogged" name="TimeLogged">
    <input type="button" value="Stop Count" onClick="stopCount()">
    <input type="button" value="Clear Timer" onClick="clearTimer()">

    <label>Notes</label>
    <input name="Notes" type="textarea" id="Notes" size="30" value="<?= $data['Notes']?>"/>

    <label>Urgent</label>
    <input name="Urgent" type="text" id="Urgent" size="30" value="<?= $data['Urgent']?>"/>

    <input type="submit" value="Update" class="AddButton">

</form>

关于php - 简单的 SQL 更新语句语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412852/

相关文章:

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

javascript - jQuery自动完成与java不过滤结果

php - 如何访问名称字段?

php - 我可以将数组放入 Mysql 查询中吗?

php - 设置 HTTP 请求 "Content-Type"

php - 如何获取父类实例?

php - 我如何使用 php 获取多维数组中的特定值?

php - PHP/MySQL 搜索引擎的 session 问题

php - 无法在 Safari 中填充下拉列表

MySQL UNION 和 ORDER - 单个表上的多个选择查询