php - 在 where 子句中使用 php 变量时,MySQL 查询不起作用

标签 php mysql

我是 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'];

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

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

最佳答案

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

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

编辑

来自下面的讨论。

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

关于php - 在 where 子句中使用 php 变量时,MySQL 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097762/

相关文章:

php - 如何从php中的字符串中删除括号?

php - MySQL 使用 REGEXP 或 LIKE 来选择带有数据库别名的表名

mysql - 如何在 vb.net 中使用 GetSchema 获取数据库中的表名称

php - 从 PHP 变量中删除空数组

php - fputcsv 将结果打印到屏幕而不是 csv

来自 mysql 的 php 邮件模板变量

php - 从 PHP MySQL 列中的所有行读取数据

php - 根据该行中列的值按比例除以每行的数字 MySQL PHP

mysql - 显示未找到的键的查询结果 [MySQL]

mysql - 如何计算查询中的年龄?年龄搜索