Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在发送id为行的新页面上显示单个条目_Php_Mysqli - Fatal编程技术网

Php 在发送id为行的新页面上显示单个条目

Php 在发送id为行的新页面上显示单个条目,php,mysqli,Php,Mysqli,我对php和mysqli非常熟悉,并找到了一个很棒的教程,但我需要一些帮助 我希望一行是可链接的,并将其发送到另一个名为single.php?id=ROWID的页面,以便显示单个条目 这就是我目前得到的 <html> <head> <title>MySQLi Tutorial</title> </head> <body> <?php //include database co

我对php和mysqli非常熟悉,并找到了一个很棒的教程,但我需要一些帮助

我希望一行是可链接的,并将其发送到另一个名为single.php?id=ROWID的页面,以便显示单个条目

这就是我目前得到的

    <html>
    <head>
        <title>MySQLi Tutorial</title>

    </head>
<body>

<?php
//include database connection
include 'db_connect.php';

$action = isset($_GET['action']) ? $_GET['action'] : "";

if($action=='delete'){ //if the user clicked ok, run our delete query

        $query = "DELETE FROM users WHERE id = ".$mysqli->real_escape_string($_GET['id'])."";
        if( $mysqli->query($query) ){
                echo "User was deleted.";
        }else{
                echo "Database Error: Unable to delete record.";
        }

}

$query = "select * from users";
$result = $mysqli->query( $query );

$num_results = $result->num_rows;

echo "<div><a href='add.php'>Create New Record</a></div>";

if( $num_results ){

    echo "<table border='1'>";//start table
        //creating our table heading
        echo "<tr>";
                echo "<th><a href=\"single.php?id={$id}\">Firstname</></th>";
                echo "<th>Lastname</th>";
                echo "<th>Username</th>";
                echo "<th>Action</th>";
        echo "</tr>";

        //loop to show each records
        while( $row = $result->fetch_assoc() ){
            //extract row
            //this will make $row['firstname'] to
            //just $firstname only
            extract($row);

            //creating new table row per record
            echo "<tr>";
                echo "<td>{$firstname}</td>";
                echo "<td>{$lastname}</td>";
                echo "<td>{$username}</td>";
                                echo "<td>";
                                        echo "<a href='edit.php?id={$id}'>Edit</a>";
                                        echo " / ";
                                        echo "<a href='#' onclick='delete_user( {$id} );'>Delete</a>";
                                echo "</td>";
            echo "</tr>";
        }

        echo "</table>";//end table

}else{
        //if table is empty
        echo "No records found.";
}

//disconnect from database
$result->free();
$mysqli->close();

?>

<script type='text/javascript'>

    function delete_user( id ){
        //this script helps us to

        var answer = confirm('Are you sure?');
        if ( answer ){ //if user clicked ok
            //redirect to url with action as delete and id to the record to be deleted
            window.location = 'index.php?action=delete&id=' + id;
        } 
    }
</script>

</body>
</html>

MySQLi教程
在single.php中

$id=$_GET['id'];
$query="select * from users where id='".$id."'";

谢谢你提出的有趣问题。
首先,让我告诉您,尽管您使用的是外观现代的数据库访问库,您使用它的方式与猛犸象化石一样古老。

需要考虑的几件事

  • 永远不要按原样使用mysqli,只能以某种更高级抽象库的形式使用
  • 不要在应用程序代码中使用real\u escape\u字符串,而只使用准备好的语句
  • 切勿将数据库代码与HTML输出混合使用。首先获取数据,然后开始输出
  • 切勿使用GET方法修改数据
下面是基于上述原则的示例。它执行所有基本积垢操作:

<?  
include 'safemysql.class.php'; // a library 
$db    = new SafeMysql();
$table = "test"; 

if($_SERVER['REQUEST_METHOD']=='POST') {
  if (isset($_POST['delete'])) {
    $db->query("DELETE FROM ?n WHERE id=?i",$table,$_POST['delete']);
  } elseif ($_POST['id']) { 
    $db->query("UPDATE ?n SET name=?s WHERE id=?i",$table,$_POST['name'],$_POST['id']);
  } else { 
    $db->query("INSERT INTO ?n SET name=?s",$table,$_POST['name']);
  } 
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);  
  exit;  
}  
if (!isset($_GET['id'])) {
  $LIST = $db->getAll("SELECT * FROM ?n",$table);
  include 'list.php'; 
} else {
  if ($_GET['id']) {
    $row = $db->getRow("SELECT * FROM ?n WHERE id=?i", $table, $_GET['id']);
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
  } else { 
    $row['name']=''; 
    $row['id']=0; 
  } 
  include 'form.php'; 
}
如果您不想显示表单,请创建另一个名为
single.php
的模板,并使用您想要的任何标记

single.php

我使用PDO如果你想你也可以用MySQLi

<?php
    include("db_connect.php"); // database configuration file
    if(isset($_GET['id'])
    {
        $id = (int) $_GET['id'];
        $sql = "SELECT * FROM `users` WHERE id=?";
        $query = $conn->prepare($sql); // $conn is PDO object yours can be different
        $query->bindValue(1,$id);
        $query->execute();
        if($query){
            $row = $query->fetch(); // 
        }else{ 
            echo "Error with Database";
        }
    }        
    else // Error for the Id selection
    {
        echo("ID is not selected");
    }
?>

您可以使用与显示多条记录相同的代码,但将查询替换为类似“select*from users where id=”。$\u GET['id']。"';我需要替换什么?非常抱歉,我是一个新手/noob,是否需要添加任何代码?首先用于sql注入并使用$\u请求also@YourCommonSense那么我应该使用什么呢?就是您希望从中获取数据的数组$_GET表示查询字符串数据,$\u POST表示POST数据,$\u COOKIE表示cookies+1。也不要使用短标记,如

<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>
<? if ($row['id']):?>
<div align=right>
<form method="POST">
<input type="hidden" name="delete" value="<?=$row['id']?>">
<input type="submit" value="Удалить"><br>
</form>
</div>
<?endif?>
  if ($_GET['id']) {
    $row = $db->getRow("SELECT * FROM ?n WHERE id=?i", $table, $_GET['id']);
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
  } else { 
    $row['name']=''; 
    $row['id']=0; 
  } 
  include 'form.php'; 
<?php
    include("db_connect.php"); // database configuration file
    if(isset($_GET['id'])
    {
        $id = (int) $_GET['id'];
        $sql = "SELECT * FROM `users` WHERE id=?";
        $query = $conn->prepare($sql); // $conn is PDO object yours can be different
        $query->bindValue(1,$id);
        $query->execute();
        if($query){
            $row = $query->fetch(); // 
        }else{ 
            echo "Error with Database";
        }
    }        
    else // Error for the Id selection
    {
        echo("ID is not selected");
    }
?>
<table border="1">
    <tr>
        <td>ID</td>
        <td>Firstname</td>
        <td>Lastname</td>
    </tr>
    <tr>
        <td><?php echo $row['id]; ?></td>
        <td><?php echo $row['firstname']; ?></td>
        <td><?php echo $row['lastname']; ?></td>
    </tr>
</table>