【问题标题】:Mysql update functionmysql更新功能
【发布时间】:2016-03-22 17:18:02
【问题描述】:

我创建了一个提交到 mysql 数据库的表单。现在我想做的是让它更新。我遇到的问题是下面的更新查询,我就是不知道哪里出错了。

 <?php
/*
Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password)
*/
include 'db.php';

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$title = mysqli_real_escape_string($link, $_POST['title']);
$price = mysqli_real_escape_string($link, $_POST['price']);
$sqm = mysqli_real_escape_string($link, $_POST['sqm']);
$sqm_land = mysqli_real_escape_string($link, $_POST['sqm_land']);
$type = mysqli_real_escape_string($link, $_POST['type']);
$area = mysqli_real_escape_string($link, $_POST['area']);
$location = mysqli_real_escape_string($link, $_POST['location']);
$bedroom = mysqli_real_escape_string($link, $_POST['bedroom']);
$terrace = mysqli_real_escape_string($link, $_POST['terrace']);
$orientation = mysqli_real_escape_string($link, $_POST['orientation']);
$water = mysqli_real_escape_string($link, $_POST['water']);
$seaview = mysqli_real_escape_string($link, $_POST['seaview']);
$pool = mysqli_real_escape_string($link, $_POST['pool']);
$ownerinfo = mysqli_real_escape_string($link, $_POST['ownerinfo']);
$gaddress = mysqli_real_escape_string($link, $_POST['gaddress']);
$description = mysqli_real_escape_string($link, $_POST['description']);




// attempt insert query execution
$sql = "update INTO property (title, price, sqm, sqm_land, type, area, location, bedroom, terrace, orientation, water, seaview, pool, ownerinfo, gaddress, description) VALUES 
('$title', '$price', '$sqm', '$sqm_land', '$type', '$area', '$location', '$bedroom', '$terrace', '$orientation', '$water', '$seaview', '$pool', '$ownerinfo', '$gaddress', '$description' )";
if(mysqli_query($link, $sql)){
    echo "Records updated successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// close connection
mysqli_close($link);

?>

【问题讨论】:

  • 你到底遇到了什么错误?
  • 您已经在使用 MySQL 检查错误,但没有使用 PHP php.net/manual/en/function.error-reporting.php,上帝知道这里有什么 db.php
  • Update mysql column的可能重复
  • @Machavity 如果我事先知道,我会一口气关闭它。我想试图教别人“如何钓鱼”是不够的。我不得不亲自把鱼从河里拉出来。还没等晚饭铃声响起,人们就急着吃饭。
  • @Fred-ii- 一切都很好。这是你的dinner bell ;)

标签: php mysql database


【解决方案1】:

您使用了错误的 UPDATE 语法。

阅读手册:

您使用的是 INSERT 语法。 http://dev.mysql.com/doc/en/insert.html

手册中的示例:

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

并使用WHERE 子句,否则您将更新整个数据库。

手册中的示例:

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

所以在你的情况下,例如(填写其余部分):

UPDATE property SET title = '$title', price = '$price' ... WHERE column = ?
  • column 是您要定位的列名,? 是行。

你的 mysqli_error($link) 会告诉你一些关于它的东西。

旁注:“教一个人如何钓鱼,而不是扔给他们一条鱼”

但是,如果这里的目标是插入,那么您需要使用INSERT INTO table 而不是UPDATE INTO table

还要确保您的表单使用 POST 方法并且所有 POST 数组都包含值。

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存阶段显示错误,而不是在生产阶段。


脚注:

用于连接db.php 的 MySQL API 未知。确保您使用与查询相同的 API,即 mysqli_。不同的 API 不会混用。

【讨论】:

  • 我是什么,这里的肝碎了?
  • 您好,谢谢,对不起,我完全错过了您的帖子。当每次都不同时,如何将列/行向下放置?
  • @stephenaxe18 抱歉,我不明白你的意思。
【解决方案2】:

你的语法不正确,应该这样格式化:

$sql = "UPDATE property SET title='$title'";

您必须添加所有以逗号分隔的名称/值对,因为我只包含了“标题”。

【讨论】:

  • 我刚刚改变了它。除了将所有其他页面更新为相同之外,非常感谢。关于如何只更新那一页的任何想法?
  • @stephenaxe18 “关于如何只更新那一页的任何想法?” - 我已经给你答案了。你在等其他人抢我的东西来回答你吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多