Php ... 就像“%$searchq%”在通配符和变量之间,我根本找不到您所说的额外空间?删除它会阻止查询显示表中的每一行吗?你是说“where ingredi…”和上面那行之间的断线吗?另外,这是一个学校项目,明天到期,因此学习和适应mysqli将在下一步进
Php ... 就像“%$searchq%”在通配符和变量之间,我根本找不到您所说的额外空间?删除它会阻止查询显示表中的每一行吗?你是说“where ingredi…”和上面那行之间的断线吗?另外,这是一个学校项目,明天到期,因此学习和适应mysqli将在下一步进,php,mysql,search,chef-recipe,Php,Mysql,Search,Chef Recipe,... 就像“%$searchq%”在通配符和变量之间,我根本找不到您所说的额外空间?删除它会阻止查询显示表中的每一行吗?你是说“where ingredi…”和上面那行之间的断线吗?另外,这是一个学校项目,明天到期,因此学习和适应mysqli将在下一步进行,但感谢您让我注意到它。啊,在“%”和“$”之间,我已经删除了它,但遗憾的是,代码仍然返回数组中的每一行,而不是那些包含搜索词的行。这是一个多么美妙的答案啊。您发布的代码运行得非常好,只是搜索现在返回表中的每一行,而不是包含搜索词的行,这与我
... 就像“%$searchq%”在通配符和变量之间,我根本找不到您所说的额外空间?删除它会阻止查询显示表中的每一行吗?你是说“where ingredi…”和上面那行之间的断线吗?另外,这是一个学校项目,明天到期,因此学习和适应mysqli将在下一步进行,但感谢您让我注意到它。啊,在“%”和“$”之间,我已经删除了它,但遗憾的是,代码仍然返回数组中的每一行,而不是那些包含搜索词的行。这是一个多么美妙的答案啊。您发布的代码运行得非常好,只是搜索现在返回表中的每一行,而不是包含搜索词的行,这与我搜索什么无关?这可能是什么原因?非常感谢你写得很好的回答!注释掉这行:$searchq=preg_replace(“#[^0-9a-z]#i”,”,$searchq);并检查是否有问题。尝试检查:$searchq=$\u POST['work'];回显“旧搜索名:”$searchq.“
”$searchq=preg#u replace(“#[^0-9a-z]#i”,”,$searchq);回显“新搜索名:”$searchq.“
”;如果第一个为空,则表示$\u POST['work']为空,因此sql查询中的“%”与每一行匹配。我在表单的错误部分附加了name=“work”,这就是为什么它一直提供完整的表。感谢所有伟大的答案和帮助!
select ingredient_name, recipe_name, recipe_ingredients.*
from recipe_ingredients
inner join ingredients inner join recipes
on recipe_ingredients.ingredient_id = ingredients.ingredient_id
and recipe_ingredients.recipe_id = recipes.recipe_id
WHERE ingredient_name = 'Brød';
$output = '';
if (isset($_POST['work'])) {
$searchq = $_POST['work'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysql_query
("select ingredient_name, recipe_name, recipe_ingredients.*
from recipe_ingredients
inner join ingredients inner join recipes
on recipe_ingredients.ingredient_id = ingredients.ingredient_id
and recipe_ingredients.recipe_id = recipes.recipe_id
WHERE ingredient_name LIKE '%searchq%' or recipe_name LIKE '%searchq%'")
or die ("Could not search");
$count = mysql_num_rows($query);
if($count == 0){
$output = 'There were no search results!';
}
else{
while ($row = mysql_fetch_array($query)) {
$recipe = $row[recipe_name];
$ingredient = $row[ingredient_name];
$id = $row[ingredient_id];
$output .= '<div>'.$recipe.' '.$ingredient.'</div>';
}
}
}
$connection = mysqli_connect('localhost', 'root', 'your_password', 'your_database');
mysqli_set_charset($connection, 'utf8');
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}
$output = '';
if (isset($_POST['work'])) {
$searchq = $_POST['work'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
$sql = "
SELECT ingredient_name, recipe_name, recipe_ingredients.*
FROM recipe_ingredients
INNER JOIN ingredients
ON recipe_ingredients.ingredient_id = ingredients.ingredient_id
INNER JOIN recipes
ON recipe_ingredients.recipe_id = recipes.recipe_id
WHERE ingredient_name LIKE '%$searchq%' or recipe_name LIKE '%$searchq%'";
$result = mysqli_query($connection, $sql);
if (!$result) {
die("SQL Error: " . mysqli_error($connection);
}
$count = mysqli_num_rows($result);
if ($count == 0) {
$output = 'There were no search results!';
} else {
while ($row = mysqli_fetch_array($result)) {
$recipe = $row[recipe_name];
$ingredient = $row[ingredient_name];
$id = $row[ingredient_id];
$output .= '<div>'.$recipe.' '.$ingredient.'</div>';
}
}
}