如何将数据库中的值与字符串的一部分进行比较

时间:2014-01-04 14:46:25

标签: php mysql

在我的数据库中有3个名片:

vampire's curse
vampire lord
shadow vampire

我创建了一个搜索表单。它将搜索包含用户输入字母的卡片。例如,我的数据库中有3个值。如果用户输入“vampire”然后按提交,它将显示值。但是它不知道如何将数据库中的值与字符串的一部分进行比较。这是我的代码(我还没有完成)。

search_form.php

<?php
echo "<h2> Search your card </h2>";
echo "<h3> type your card name fully or partly here </h3>";
echo "<form action='SearchData.php' method='POST'>";
echo "Card name (full or part) <input type='text' name='CardName'/>";
echo "<input type='submit' values='search for card(s)'/>";
?>

SearchData.php

<?php
include('connect.inc');
$connect=mysqli_connect($host,$username,$password,$dbname) or die("can't connect to server");
if(isset($_POST['CardName']) and !empty($_POST['CardName']))
{    
    $data=mysqli_real_escape_string($connect,$_POST['CardName']);
    $query="SELECT CardName FROM dragon WHERE CardName='";
    // Iam stucked at here !        
}
else
{
    echo "search form can not be empty !";
    include("search_form.php");
}
?>

3 个答案:

答案 0 :(得分:4)

查看the LIKE function

SELECT id, name FROM cards WHERE name LIKE '%vampire%';

答案 1 :(得分:1)

如需参考,您也可以使用REGEXP

SELECT id, name FROM cards WHERE name REGEXP 'vampire';

答案 2 :(得分:0)

$search = "%".$_POST['search']."%";
        $read = new mysqli($db_hostname,$db_rUsername,$db_rPassword,$db_database);
        $stmt = $read->prepare("SELECT `CardName` FROM dragon WHERE `cardname` LIKE ?");
        $stmt->bind_param('s',$search);
        $stmt->execute();
        $stmt->bind_result($cardnameDb);
        while ( $stmt->fetch() ) {
            $cardName[] = $cardnameDB;
        }
        $stmt->close();

这会返回与搜索到的字词匹配的卡片数组。

请注意,搜索字词前后有%,这就像通配符一样。如果你想看到它,我也有一个非准备好的声明,但是不建议你使用它。

如果您有任何问题,请随时问我!请注意,他LIKE运算符是您正在寻找的。