-5
<?php
 include "db.php";

 $var = @$_POST['find'];

 //check for empty string and display a message.
 if($var == ""){
echo "<p>Please input a valid 6-digit ID number</p>";
exit;
 } else {

$searchMember = "SELECT * FROM $tablename WHERE id='$var'";

$numresults=mysql_query($searchMember);
$numrows=mysql_num_rows($numresults);

if($numrows == 1){
    echo $searchMember['displayname'];
} else if ($numrows == 0){
    echo "<p>Sorry, we couldn't find anything that matches your input. Try again?</p>";
} 
   }

?>

我在 db.php 中包含了连接到数据库的信息。以下是表单的外观:

<body>
<?php 
include "db.php";
include "searchSystem.php"; 
?>
<form name="search" method="post" action="searchSystem.php">
    Input a 6-digit ID number: <input type="text" name="find" />

    <input type="submit" name="search" value="Search" />
</form>

所以我的表中有一列有 6 位用户 ID。我们想让他们搜索他们朋友的 ID 号码并查看他们的个人资料。


所以这就是我刚刚写的:

<?php
include "db.php";

$var = isset($_POST['find']) ? $_POST['find'] : '';

//check for empty string and display a message.
if($var == ""){
echo "<p>Please input a valid 6-digit ID number</p>";
exit;

} else {

$searchMember = $db->query("SELECT * FROM $tablename WHERE id='$var'");
$row_count = $searchMember->row_count();
$result =$searchMember->fetchALL(PDO::FETCH_ASSOC);

if($row_count == 1){
    echo $result['displayName'].' '.$result['id'];
} else if ($row_count == 0){
    echo "<p>Sorry</p>";
}
}

?>

还是不行:(

4

2 回答 2

1

你有两个明显的问题:

  • $tablename从未定义
  • $searchMember是一个字符串而不是一个关联数组,所以$searchMember['displayname']没有意义
于 2013-03-11T19:54:15.993 回答
1

这里有很多问题,但如果其中任何一个是您的实际问题,我不能说:

$var = @$_POST['find'];

不要抑制错误,而是测试正确的输入:

$var = isset($_POST['find']) ? $_POST['find'] : '';

这很容易受到 SQL 注入的影响:

$searchMember = "SELECT * FROM $tablename WHERE id='$var'";

而是正确地转义变量:

$searchMember = sprinf("SELECT * FROM $tablename WHERE id='%s'", mysql_real_escape_string($var));

此外$tablename,除非它在您包含的文件中,否则永远不会定义。

$searchMember不是数组。我认为您的意思是引用查询的结果,但要做到这一点,您需要这样做:

$memberResult = mysql_fetch_assoc($numrows);
echo $memberResult['displayname'];

最后你不应该使用mysql_*你应该使用PDOor Mysqli

于 2013-03-11T19:57:44.233 回答