Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql搜索脚本,如何使匹配结果加粗_Php_Mysql_Database_Bold - Fatal编程技术网

php mysql搜索脚本,如何使匹配结果加粗

php mysql搜索脚本,如何使匹配结果加粗,php,mysql,database,bold,Php,Mysql,Database,Bold,下面我有一个脚本,可以读取我网页上mysql数据库中显示的信息,我如何将匹配结果加粗?例如,如果我搜索“john”,如何生成显示的结果“johnbloggs”。谢谢 这是到目前为止的剧本 <? mysql_connect ("localhost", "user","pass") or die (mysql_error()); mysql_select_db ("databasename"); $term = $_POST['term']; $sql = mysql_query("se

下面我有一个脚本,可以读取我网页上mysql数据库中显示的信息,我如何将匹配结果加粗?例如,如果我搜索“john”,如何生成显示的结果“johnbloggs”。谢谢

这是到目前为止的剧本

<?
mysql_connect ("localhost", "user","pass")  or die (mysql_error());
mysql_select_db ("databasename");

$term = $_POST['term'];

$sql = mysql_query("select * from tablename where category like '%$term%' or title like '%$term%' or postcode like '%$term%' or info like '%$term%' ");

while ($row = mysql_fetch_array($sql)){
    echo '<br/> Category: '.$row['category'];
    echo '<br/> Title: '.$row['title'];
    echo '<br/> Address: '.$row['add1'];
    echo '<br/> Street: '.$row['street'];
    echo '<br/> City: '.$row['city'];
    echo '<br/> Postcode: '.$row['postcode'];
    echo '<br/> Phone: '.$row['phone'];
    echo '<br/> E-Mail: '.$row['email'];
    echo '<br/> Website: '.$row['website'];
    echo '<br/><br/>';
    }
?>

例如,假设您有一个数组
$results
,其中包含来自MySQL查询的一些结果

假设您在
name
字段中搜索

您可以使用非常简单的
str\u replace
来实现这一点:

foreach($results as $result)
    echo str_replace($search,'<b>'.$search.'</b>',$result['name']);
顺便提一下(重要)

你在这里做什么:

$term = $_POST['term'];

$sql = mysql_query("select * from tablename where category like '%$term%' or title like '%$term%' or postcode like '%$term%' or info like '%$term%' ");
这是非常危险的
$\u POST['term']
来自用户,如果该用户填写
,该怎么办;删除表tablename--
?您的查询将突然更改为删除整个表并删除所有信息的内容

您应该始终检查用户输入,下面是一个很好的教程,介绍了一些方法:

功能突出显示($term,$result){
返回str_replace($term,“”.$term.”,$result);
}
然后对每个要突出显示的字段执行此操作

while ($row = mysql_fetch_array($sql)){
echo '<br/> Category: '.highlight($term, $row['category']);
echo '<br/> Title: '.highlight($term, $row['title']);
echo '<br/> Address: '.$row['add1'];
echo '<br/> Street: '.$row['street'];
echo '<br/> City: '.$row['city'];
echo '<br/> Postcode: '.highlight($term, $row['postcode']);
echo '<br/> Phone: '.$row['phone'];
echo '<br/> E-Mail: '.$row['email'];
echo '<br/> Website: '.$row['website'];
echo '<br/><br/>';
}
while($row=mysql\u fetch\u数组($sql)){
回显“
类别:”。突出显示($term,$row['Category']); 回显“
标题:”。突出显示($term,$row['Title'); 回显“
地址:”.$row['add1']; 回音“
街道:”.$row[“街道]; 回声'
城市:'.$row['City']; 回显“
邮政编码:”。突出显示($term,$row['Postcode'); echo'
电话:'.$row['Phone']; 回显“
电子邮件:”.$row['email']; echo'
网站:'.$row['Website']; 回音“

”; }
您还可以一次在所有字段中突出显示它。前

while ($row = array_map(function($res) use ($search){
        str_replace($search,'<b>'.$search.'</b>',$res);
    },mysql_fetch_array($sql))){
    //your print
}
while($row=array\u映射(函数($res)使用($search){
str_替换($search、.$search.'、$res);
},mysql_fetch_数组($sql))){
//你的指纹
}

它需要PHP5.3+,但可能会被重写为5.2-

感谢promt的回复,但我正在努力实现这一点。我是php新手,不确定我的搜索字符串是什么。我试图让用户输入匹配的结果返回粗体。提前感谢。在您的示例中,这将是
$\u POST['term']
$term
。再次感谢,最后一件事,在我的代码中,我将在哪里插入这段代码?感谢foreach($results as$result)echo str_替换($term、.$term.'、$result['title');这只是一个例子,你应该能够根据自己的代码调整它,但我会更新我的答案。太棒了!现在,如果结果完全匹配,它将使结果更加醒目。是否有一种方法可以编辑代码以使不完全匹配的匹配变为粗体?例如如果有人打圣约翰救护车。搜索的是约翰。它会被突出显示吗?谢谢。谢谢richard,我的代码里有什么我可以插入你的代码吗,谢谢advance@John我已经更新了我的答案,向您展示了它的工作原理。这基本上与Kokos的答案相同,但是调用函数而不是重复代码(通常是个好主意)。您绝对应该注意他关于SQL注入的警告。
while ($row = mysql_fetch_array($sql)){
echo '<br/> Category: '.highlight($term, $row['category']);
echo '<br/> Title: '.highlight($term, $row['title']);
echo '<br/> Address: '.$row['add1'];
echo '<br/> Street: '.$row['street'];
echo '<br/> City: '.$row['city'];
echo '<br/> Postcode: '.highlight($term, $row['postcode']);
echo '<br/> Phone: '.$row['phone'];
echo '<br/> E-Mail: '.$row['email'];
echo '<br/> Website: '.$row['website'];
echo '<br/><br/>';
}
while ($row = array_map(function($res) use ($search){
        str_replace($search,'<b>'.$search.'</b>',$res);
    },mysql_fetch_array($sql))){
    //your print
}