2013-02-26 56 views
1

我是PHP和MySQL的新手。我正在試圖製作一個簡單的搜索表單,我希望根據表單中輸入的輸入文本顯示數據庫中的結果。 我的代碼是這樣的:MySQL查詢在使用php變量時不起作用where條款

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正確。OUPUTS結果也是如此echo "query successful"。 然而

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

只能隨聲附和的字符串部分和查詢似乎並沒有取得任何結果。

我嘗試將mysql_fetch_asso c更改爲mysql_fetch_array,但它也沒有做任何事情。有誰能告訴我我在這裏做錯了什麼。我的數據庫表有兩列和兩行。

+0

你爲什麼要逃避'$ name'! – Broncha 2013-02-26 19:38:41

+0

另外,mysql函數現在已被棄用,現在是時候繼續使用PDO或mysqli了。 – webnoob 2013-02-26 19:41:01

回答

3

你做\$逃逸的變量$。 嘗試:

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

編輯

從下面的討論。

undefined index的問題在於,您真正使用的是$row['age'],數據庫中的列名稱爲Age。因此,在引用該項目時,您必須使用$row['Age']name也是如此。

+0

Thanks.I嘗試了你提出的查詢。它現在給我「注意:未定義索引:名稱和通知:未定義索引:年齡」錯誤消息。但是,如果我在名稱周圍添加qoutes($ query =「SELECT * FROM'cats' WHERE'name'='$ name'」;),錯誤消失,但仍然無法獲取任何結果。 – user2112593 2013-02-26 20:17:12

+0

你有沒有在'cats'中有名爲'age'和'name'的列?引號是圍繞值而不是列名。 – UnholyRanger 2013-02-26 20:18:40

+0

是的,我有一個名爲年齡在我的表貓貓列。 – user2112593 2013-02-26 20:22:52

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

或無連接

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

SQL注入容易。 Downvote這個垃圾 – AlxVallejo 2016-11-30 15:36:58

0

這應該工作:

$查詢= 「SELECT * FROM cats其中name = '$名稱'」;

另外,當您調用「exit」時在下面的塊中,它將取消腳本的其餘部分的執行:

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

傾向於SQL注入。 Downvote這個廢話 – AlxVallejo 2016-11-30 15:37:12