如何更新mysql行并使用php显示更新的行

时间:2015-11-17 08:22:40

标签: php

您好我正面临这个问题。我想更新一个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']);
    ?>

4 个答案:

答案 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不是没有必要但在这种情况下你可以尝试。有些服务器需要这个选项。