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>';
        }
    }
}