2

元の PHP でワイルドカードを使用するための多くの説明を見てきましたが、ユーザー入力でワイルドカードを使用したい場合に役立つものは何も見つかりませんでした。私はPHPと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");
?>

よろしくお願いします。

4

2 に答える 2

0

同様LIKEにエスケープすることを確認してください:$grade

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

6その後、または6%または6?などを指定できます。

于 2012-08-17T13:47:51.043 に答える
-1

LIKE コマンドを使用する必要があります。

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

routesこれにより、SQL はwhere でGrade始まるすべてのエントリを検索するように指示されます$grade

詳細についてはLIKE- MySQL リファレンス

于 2012-08-17T13:17:44.910 に答える