2012-08-17 90 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?

相关问题