1

我是 PHP 和 MySQL 的新手。我正在尝试制作一个简单的搜索表单,我希望使用它根据表单中输入的输入文本显示数据库的结果。我的代码是这样的:

表单.php

<!DOCTYPE html>
<html lang="en">
<html>
<head>
<title>test</title>
</head>
<body>
<form action="search.php" method="GET" id="form">
Name: <input type="text" name="name" >
Age:<input type="text" name="age">
Search<input type="submit" name="submit" id="Search" Value="Search">

</form>

</body>
</html>

连接.php

  <?php
  $connect = mysql_connect('localhost','$user','$password'); 

  if(!$connect){
die('Could not connect'.mysql_error() );  
  }

  $db_selected = mysql_select_db('test');  

  if(!$db_selected){
die('wrong'.mysql_error() );
  }

  ?>

搜索.php

 <?php
  include("includes/connect.php");

  $name=$_GET['name'];


  echo $name;

  $query = "SELECT * FROM `cats` WHERE name='\$name'";
  $results= mysql_query($query);


  if (!empty($results)){
echo "query successful" ;
exit;
   }
  $row=mysql_fetch_assoc($results);
  echo "Age:".$row['age'];
  echo "Name:".$row['name'];
 ?>

正确地echo $names输出结果,也是如此echo "query successful"。然而

echo "Age:".$row['age']; 
echo "Name:".$row['name'];

只回显字符串部分,查询似乎没有获取任何结果。

我尝试将mysql_fetch_assoc 更改为mysql_fetch_array,但它也没有做任何事情。谁能告诉我我在这里做错了什么。我的数据库表有两列和两行。

4

3 回答 3

3

您正在$通过执行来逃避变量中的\$. 尝试:

$query = "SELECT * FROM `cats` WHERE name='$name'";

编辑

从下面的讨论。

的问题undefined index是,当你真正使用$row['age']时,数据库中的列名是Age. 因此,您必须$row['Age']在提及该项目时使用。也是如此name

于 2013-02-26T19:40:10.973 回答
0
$query = "SELECT * FROM `cats` WHERE name='" . $name . "'";

或不连接

$query = "SELECT * FROM `cats` WHERE name='$name'";
于 2013-02-26T19:38:56.097 回答
0

这应该有效:

$query = "SELECT * FROM catsWHERE name = '$name'";

此外,当您调用“退出”时;在以下块中,它将取消脚本其余部分的执行:

    if (!empty($results)){
     echo "query successful" ;
     exit;
    }
于 2013-02-26T19:44:33.277 回答