如何从MYSQL数据库中检索特定id的详细信息

时间:2014-03-19 03:56:39

标签: php mysql sql database

根据URL中id的值从数据库中获取数据。

$id= $_GET['id'];
$strSQL = "SELECT * FROM people WHERE id='$id'";
$rs = mysql_query($strSQL);

这是有效的,但它显示的是空白页。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:1)

[1]。 {@ 1}}已被弃用。

[2]。您的代码非常容易受到sql注入攻击。使用mysql_*$_GET['id'](如果您更新)清理mysql_real_escape_string($_GET['id'])

[3]。结果作为资源返回。通过它循环:

mysqli

答案 1 :(得分:1)

我不建议使用 mysql_query ,因为它已被弃用。

  

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。

我建议使用 MySQLi PDO

但是,如果您坚持使用mysql_函数,则可以使用 mysql_fetch_assoc 来获取字段名称中的关联数组键中返回的详细信息。< / p>

$id= $_GET['id'];
$strSQL = "SELECT * FROM people WHERE id='$id'";
$rs = mysql_query($strSQL);
if (!$rs) {
    echo 'Could not run query: ' . mysql_error(); //A bit of error checking
    exit;
}

$row = mysql_fetch_assoc($rs);

if($row){
  echo $row['field']; // An array key'd on the table's field names is returned
}

如果people表中的字段名为first_name,则该值将存储在返回的关联数组中的$row['first_name']中。

我认为id是一个唯一字段,最多只能返回一行。 如果不是这种情况,请使用条件为while($row = mysql_fetch_assoc($rs))的循环来遍历所有返回的行。

答案 2 :(得分:1)

正如我在原始评论中提到的那样:

“您需要使用循环来获取数据,然后回显它。”

其他人已经给你举例,不使用你现在的方法,这是一个PDO方法:

<?php
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';

$id = $_GET['id'];

try {

$pdo= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     exit( $e->getMessage() );
}


try {

$stmt = $pdo->prepare('SELECT * FROM people WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->execute();

} catch (PDOException $e) {
     echo $e->getMessage();
}

/* optional method
foreach($stmt as $row) {
      echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'];
}
*/

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $id = $row['id'];
  $n = $row['name'];
  $e = $row['email'];
}

echo $id;
echo "<br>";
echo $n;
echo "<br>";
echo $e;

?>

另一种PDO方法:

<?php
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';

$id = $_GET['id'];

// $id= 4; // my own test id number

try {

$pdo= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     exit( $e->getMessage() );
}

try {
     $sql = "SELECT * FROM people WHERE id='$id'";
     $results = $pdo->query($sql);

} catch (PDOException $e) {
     echo $e->getMessage();
}

/* optional method
foreach($results as $row) {
      echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'];
}
*/

while ($row = $results->fetch(PDO::FETCH_ASSOC)) {
  $id = $row['id'];
  $n = $row['name'];
  $e = $row['email'];
}

echo $id;
echo "<br>";
echo $n;
echo "<br>";
echo $e;

?>

答案 3 :(得分:0)

你必须获取结果。

尝试这样:

$id= $_GET['id'];
$strSQL = "SELECT * FROM people WHERE id='$id'";
$rs = mysql_query($strSQL);
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    echo $row['id']; //$row is an array of each row of your table
}

see details

不推荐使用

mysql_*个功能,您应切换为mysqli_*pdo

答案 4 :(得分:0)

    $id= $_GET['id'];
    $strSQL = "SELECT * FROM people WHERE id='$id'";
    $rs = mysql_query($strSQL);
    $row = mysql_fetch_array($rs);
    $num_rows = mysql_num_rows($row);
      if($num > 0)
      {  
         foreach($row as $r) 
         {
         echo $r;          
         }
      }
      else
      {
         echo "No rows "
      }

此代码将显示值。 注意:在PHP的更高版本中将不推荐使用mysql_query。所以最好从PHP中的mysqli或PDO开始。