在我的数据库中有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");
}
?>
答案 0 :(得分:4)
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
运算符是您正在寻找的。 p>