您好我正面临这个问题。我想更新一个mysql行,然后使用PHP显示更新的行。 我的代码是
<?php
$read=897;
$connect=new mysqli('localhost','username','password','dbname');
$sql="update table1 set colomn='xyz' where id=$read";
$result=$connect->query($sql);
$sql1="select colomn from table1 where id=$read";
$result1=$connect->query($sql1);
$rows=$result->fetch_assoc();
echo ($rows['colomn']);
?>
答案 0 :(得分:1)
为什么要检索更新的行?只需检查更新是否成功,您可以确定该值是您更新的值。在我看来,这似乎是双重工作......
答案 1 :(得分:0)
首先,将您的连接与数据库分开。将其保护在受限制的文件夹中
<强> connection.php 强>
<?php
function db(){
return new mysqli('host', 'username', 'password', 'database');
}
?>
现在您的其他页面应该更像:
<?php
include 'restricted/connection.php'; $db = db();
$test_id = 897;
if($db->query("UPDATE table1 SET column='xyz' WHERE id=$test_id")){
if($db->affected_rows > 0){
if($sq = $db->query("SELECT column FROM table1 WHERE id=$test_id")){
if($sq->num_rows > 0){
/* single result way - probably want this is your case
$obj = $sq->fetch_object();
echo $obj->column; */
// multiple results way
while($row = $sq->fetch_object()){
echo "{$row->column}<br />";
}
}
$sq->free(); $db->free(); die;
}
else{
// connection failure
$db->free(); die;
}
}
else{
// update failure
$db->free(); die;
}
}
else{
// connection failure
$db->free(); die;
}
?>
老实说,实际上没有理由对最后一个数据库表条目执行查询,因为您已经应该知道这是什么,因为您刚刚进行了更新。
答案 2 :(得分:0)
echo在上面的例子中不起作用。 mysql可以潜在地返回一些记录,所以它希望你迭代它们
while ($row = $result1->fetch_assoc()) {
echo $row['colomn'];
}
答案 3 :(得分:0)
您有一个错误,我将向您展示一个具有usleep()
功能的解决方案:
<?php
$read=897;
$connect=new mysqli('localhost','username','password','dbname');
$sql="UPDATE `table1` SET `colomn`='xyz' WHERE `id`='$read'";
$result=$connect->query($sql);
usleep(1000);
$sql1="SELECT `colomn` FROM `table1` WHERE `id`='$read'";
$result1=$connect->query($sql1);
$rows=$result1->fetch_assoc();
echo ($rows['colomn']);
?>
第一个错误是从数据库中获取数据的位置。您需要$result->fetch_assoc()
$result1->fetch_assoc()
。
第二件事是在1000微秒内添加usleep以给数据库存储数据一些时间,并在1000毫秒后从同一个表中提取数据。在许多情况下,usleep不是没有必要但在这种情况下你可以尝试。有些服务器需要这个选项。