gpt4 book ai didi

php - 使用 php 进行 MySQL 搜索查询

转载 作者:行者123 更新时间:2023-11-29 18:30:18 25 4
gpt4 key购买 nike

我需要执行一个 mysql 查询来搜索(在列中)nomecognome(在 Prenotazioni 表中)。

问题是:查询必须搜索姓名和姓氏或姓氏和姓名(它们也可以是 3 或 4 个值),而我只有 1 个搜索表单。如果我有两个具有不同姓氏的约翰(黑人和白人),并且我在搜索表单中输入约翰黑人或白人约翰,则查询将为我提供两个结果

我该如何修复它?

index.php

<table border="10">
<tr>
<td align="center"><b>CERCA</b></td>
</tr>
<tr>
<td>
<table>
<form method="post" action="./cerca.php">
<tr>
<td>Cerca:</td>
<td width="250" align="left"><input type="text" autocomplete="off" size="70" name="ricerca"/>
</td>
</tr>
<tr>
<td></td>
<td align="left"><input style="width:100px;" type="submit" value="Cerca"/>
</tr>
</form>
</table>
</td>
</tr>
</table>

cerca.php

 <!doctype html><html>
<head>
<meta charset="utf-8">
<title>Ricerca</title>
</head>
<body>
<?php

include('./config.php');

$name = isset($_POST['ricerca']) ? preg_replace('/\s+/', ' ', trim($_POST['ricerca'])) : '';

if ($name != '') {
$q = 'SELECT * FROM Prenotazioni WHERE 1=2';
$parts = explode(' ', $name);

foreach ($parts as $part) {
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $part . '\'';
}

$exec = mysql_query($q);
if (mysql_num_rows($exec)) {
echo '<tr>
<td width="242">
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr></tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Nome</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Cognome</strong></td>
</tr>';

while($row = mysql_fetch_array($exec)) {
echo '<tr>
<td align="center" bgcolor="#FFFFFF">' . $row['nome'] . '</td>
<td align="center" bgcolor="#FFFFFF">' . $row['cognome'] . '</td> <p><br>
<br>';
}
}
else {
echo 'Errore: nessuna corrispondenza trovata.';
}

}
else {
echo 'Errore: Inserisci un nome.';
}
?>

最佳答案

三天前我遇到了同样的挑战,这解决了它:将 cerca.php 的第 6-11 行修改为此

$parts = explode(" ",$name);

$count = count($parts);

$q = "SELECT * FROM Prenotazioni WHERE";

for($i = 0;$i < $count;$i++)
{
if($i != $count-1)
$q = $q.
" (nome LIKE '%".$parts[$i]."%' OR
cognome LIKE '%".$parts[$i]."%') AND ";
else
$q = $q.
" (nome LIKE '%".$parts[$i]."%' OR
cognome LIKE '%".$parts[$i]."%')";
}
$exec = mysql_query($q);

给定“john black”、“black john”和“bla joh”返回相同的结果,而“white john”则不是与“黑约翰”相同。希望对您有帮助

关于php - 使用 php 进行 MySQL 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com