在where子句中使用php变量时MySQL查询无效

时间:2013-02-26 19:37:37

标签: php mysql

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

form.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>

Connect.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() );
  }

  ?>

的search.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'];

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

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

3 个答案:

答案 0 :(得分:3)

您通过$转义变量中的\$。 尝试:

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

修改

来自下面的讨论。

undefined index的问题在于您实际使用的是$row['age'],数据库中的列名是Age。因此,在引用该项目时,您必须使用$row['Age']name也是如此。

答案 1 :(得分:0)

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

或没有连接

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

答案 2 :(得分:0)

这应该有效:

$ query =“SELECT * FROM cats WHERE name ='$ name'”;

另外,当你打电话给“退出”时在下面的块中,它将取消执行脚本的其余部分:

    if (!empty($results)){
     echo "query successful" ;
     exit;
    }