更新查询 PHP MySQL
Posted
技术标签:
【中文标题】更新查询 PHP MySQL【英文标题】:Update query PHP MySQL [duplicate] 【发布时间】:2012-02-12 04:38:38 【问题描述】:谁能帮我理解为什么这个更新查询没有更新我数据库中的字段?我在我的 php 页面中有这个来从数据库中检索当前值:
<?php
$query = mysql_query ("SELECT * FROM blogEntry WHERE username = 'bobjones' ORDER BY id DESC");
while ($row = mysql_fetch_array ($query))
$id = $row['id'];
$username = $row['username'];
$title = $row['title'];
$date = $row['date'];
$category = $row['category'];
$content = $row['content'];
?>
这是我的 html 表单:
<form method="post" action="editblogscript.php">
ID: <input type="text" name="id" value="<?php echo $id; ?>" /><br />
Username: <input type="text" name="username" value="<?php echo $_SESSION['username']; ?>" /><br />
Title: <input type="text" name="udtitle" value="<?php echo $title; ?>"/><br />
Date: <input type="text" name="date" value="<?php echo $date; ?>"/><br />
Message: <textarea name = "udcontent" cols="45" rows="5"><?php echo $content; ?></textarea><br />
<input type= "submit" name = "edit" value="Edit!">
</form>
这是我的“editblogscript”:
<?php
mysql_connect ("localhost", "root", "");
mysql_select_db("blogass");
if (isset($_POST['edit']))
$id = $_POST['id'];
$udtitle = $_POST['udtitle'];
$udcontent = $_POST['udcontent'];
mysql_query("UPDATE blogEntry SET content = $udcontent, title = $udtitle WHERE id = $id");
header( 'Location: index.php' ) ;
?>
我不明白为什么它不起作用。
【问题讨论】:
【参考方案1】:您必须在查询中的任何 VARCHAR 内容周围加上单引号。所以你的更新查询应该是:
mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = $id");
此外,直接使用 POST 中的内容更新数据库也是一种糟糕的形式。您应该使用 mysql_real_escape_string 函数清理传入的数据。
【讨论】:
我相信的任何字符串。比如说,查询SELECT 'Hello World';
中根本没有 varchar 或字段,但仍然需要引号。
这已经过时了。
是的,亲爱的现代用户,不要使用这个已弃用且不安全的查询。您应该将mysqli
或pdo
与准备好的语句和占位符一起使用,以确保查询安全。切勿盲目地将用户提交的数据直接写入您的查询中。
是的,这肯定不是在 php 中执行 mysql 查询的正确方法。它回答了最初的问题,但已经过时了。【参考方案2】:
在不知道您得到的实际错误是什么的情况下,我猜它缺少引号。尝试以下方法:
mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = '$id'")
【讨论】:
【参考方案3】:需要使用点运算符的需要添加引号:
mysql_query("UPDATE blogEntry SET content = '".$udcontent."', title = '".$udtitle."' WHERE id = '".$id."'");
【讨论】:
【参考方案4】:这里我更新了两个变量和当前日期和时间
$id = "1"; $title = "phpmyadmin";
$sql= mysql_query("UPDATE table_name SET id ='".$id."', title = '".$title."',now() WHERE id = '".$id."' ");
now() 函数更新当前日期和时间。
note: For update query we have define the particular id otherwise it update whole table defaulty
【讨论】:
【参考方案5】:首先,您应该定义“不起作用”。
其次,我假设您的表格字段“内容”是 varchar/text,因此您需要将其括在引号中。 content = '$content'
最后但同样重要的是:在查询后直接使用echo mysql_error()
进行调试。
【讨论】:
使用mysql_error()
查找数据库的任何错误。通过这种方式您可以解决您的问题
回显似乎不是一种方便的方法。如果您不在时发生错误怎么办?
我建议使用 trigger_error()。它不仅会遵循站点范围的错误报告规则(日志或显示),而且还提供文件名和行号,这些信息在日志错误的情况下是无价的【参考方案6】:
在sql查询中尝试这样,它会正常工作。
$sql="UPDATE create_test set url= '$_POST[url]' WHERE test_name='$test_name';";
如果您必须更新多个列, 像这样使用,
$sql="UPDATE create_test set `url`= '$_POST[url]',`platform`='$_POST[platform]' WHERE test_name='$test_name';";
【讨论】:
【参考方案7】:你必须先写单引号,然后双引号,然后在字段名称之前和之后加点
mysql_query("UPDATE blogEntry SET content ='".$udcontent."', title = '".$udtitle."' WHERE id = '".$id."' ");
【讨论】:
【参考方案8】:更新表格的行或列
$update = "UPDATE daily_patients SET queue_status = 'pending' WHERE doctor_id = $room_no and serial_number= $serial_num";
if ($con->query($update) === TRUE)
echo "Record updated successfully";
else
echo "Error updating record: " . $con->error;
【讨论】:
【参考方案9】:<?php
require 'db_config.php';
$id = $_POST["id"];
$post = $_POST;
$sql = "UPDATE items SET title = '".$post['title']."'
,description = '".$post['description']."'
WHERE id = '".$id."'";
$result = $mysqli->query($sql);
$sql = "SELECT * FROM items WHERE id = '".$id."'";
$result = $mysqli->query($sql);
$data = $result->fetch_assoc();
echo json_encode($data);
?>
【讨论】:
以上是关于更新查询 PHP MySQL的主要内容,如果未能解决你的问题,请参考以下文章