2012-08-17 86 views
2

我已經看過了,雖然我在原始PHP中看到了很多使用通配符的解釋,但當用戶輸入想要使用通配符時,我還沒有找到任何幫助我的解釋。我對PHP和MYSQL非常陌生。應該使用哪個符號?來自HTML表單的MySQL查詢 - 輸入是否可以使用通配符?

基本上,用戶從MYSQL數據庫中爲給定等級請求數據,可以是一個簡單的數字或數字,後跟一個字母或一個加號。我希望他們能夠請求具體6a(工作正常)或6,然後通配符返回6a,6a +,6b等(我不知道該怎麼做)。

對於進一步的細節:

我有以下形式:

<form name="gradereturn" method="POST" action="gradequery.php"> 
<input type="text" name="Grade" value="Grade"> 
<input type="submit" name="Submit1" value="Retrieve"> 

和PHP:

<?php 
$grade = $_POST['Grade']; 
if (isset($_POST['Submit1'])) { 
    mysql_connect("localhost", "**details**", "**details**") or die(mysql_error()); 
    mysql_select_db("**details**") or die(mysql_error()); 
    $result = mysql_query("SELECT * FROM routes WHERE Grade='$grade'") or die(mysql_error()); 
    $row = mysql_fetch_array($result); 
    echo "Line - Colour - Grade<br />"; 
    while($row = mysql_fetch_array($result)){ 
     echo $row['Line']. " - ". $row['Colour']. " - ". $row['Grade']; 
     echo "<br />"; 
    } 
} 
else print ("Please enter your required grade above"); 
?> 

預先感謝您的任何幫助。

+0

[MySQL的通配符](http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like)? – 2012-08-17 13:12:04

+0

它可能無助於回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不確定使用哪一個,[閱讀本文](http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/)。 – Matt 2012-08-17 13:12:34

+0

我不知道,謝謝。我會去讀。 – user1606927 2012-08-18 07:27:46

回答

-1

您將要使用LIKE命令。

$result = mysql_query("SELECT * FROM routes WHERE Grade LIKE '$grade%'") 

這告訴SQL找到routes所有條目,其中Grade開始與$grade

有關LIKE更多信息 - MySQL Reference

+0

你是不是指''SELECT * FROM WHERE Grade LIKE'{$ grade}%'「'? – undone 2012-08-17 13:23:29

+0

是的,不知道爲什麼我在字符串中拼接一個字符串。編輯已經完成。 – Jeremy1026 2012-08-17 13:38:38

0

使用LIKE,並確保你逃避$grade還有:

$grade = mysql_real_escape_string($grade); 
$sql = "SELECT * FROM routes WHERE Grade LIKE '{$grade}'"; 
$result = mysql_query($sql); 

然後,他們可以指定66%6?

相關問題