我对 SQL 或 DB 的了解非常有限,为零,所以提前道歉。
我正在尝试在网页中创建一个类似表格的结构,一列用于膳食名称,一列用于配料 - 也可以通过按钮进行搜索。
编辑:
感谢大家的回复,他们非常有帮助。 错误不再发生,但是现在我没有从数据库中得到任何结果,但没有错误。
include("inc/dbConn.php"); /////$db_conx
if(isset($_POST["search"])){
$searchq = $_POST["search"];
$sql ="
SELECT main_meal.name, ingred.name
FROM main_meal
JOIN meal_ingred on meal_ingred.meal_id = main_meal.id
JOIN ingred ON ingred.id = meal_ingred.ingred_id
WHERE ingred.name LIKE '%$searchq%'";
$results = $db_conx->query($sql);
var_dump($results);
if($results->num_rows){
while ($row =$results->fetch_object()){
echo "{$row->name} ({$row->name})<br>";
}
}
}
为了澄清,这是我的结构:
(抱歉,外部链接,我没有足够的声誉来发布图像。)
http://i30.photobucket.com/albums/c340/Tyrage/Untitled-2_zpsc48126b3.png
$结果转储:
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(2) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }
很明显我不知道我在做什么,所以非常感谢任何帮助。
谢谢。
最佳答案
这里缺少一个关系表,它将存储膳食和成分之间的联系。
您的查询也有错误,因为首先您尝试正确使用 a/b 命名来命名列,然后使用它来命名表。
恕我直言,你应该这样做(添加关系表):
if(isset($_POST["search"])){
$searchq = $_POST["search"];
$sql ="
SELECT main_meal.name AS a, ingred.name as b
FROM main_meal
JOIN rel_meal_ingred on rel_meal_ingred.meal_id = main_meal.id
JOIN ingred ON ingred.id = rel_meal_ingred.ingred_id
where ingred.name LIKE '%$searchq%'";
$results = $db_conx->query($sql);
if($results->num_rows){ //////line 15
while ($row =$results->fetch_object()){
echo "{$row->a} ({$row->b})<br>";
}
}
}
关于php - MYSQL、连接、AS、LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318237/