我创建了一个提交到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);
?>
答案 0 :(得分: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,那么您需要使用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不会混用。
答案 1 :(得分:0)
您的语法不正确,应格式如下:
$sql = "UPDATE property SET title='$title'";
你必须添加逗号分隔的所有名称/值对,因为我只包含'title。'