当我选择一个类别时,它会显示一个新的错误。我只需要回应纸杯蛋糕的名称和所选类别的价格,如果可能的话,我想添加另一个下拉按钮与品味。例如,如果有人正在寻找生日纸杯蛋糕将香草味道所有的生日纸杯蛋糕香草味道将显示与其价格。
<html>
<body>
<?php
$server="localhost";
$username="root";
$password="";
$connect_mysql=mysql_connect($server,$username,$password) or die ("Connection Failed!");
$mysql_db=mysql_select_db("wordpress",$connect_mysql) or die ("Could not Connect to Database");
$query = "SELECT * FROM category ";
$result=mysql_query($query) or die("Query Failed : ".mysql_error());
$i=0;
while($rows=mysql_fetch_array($result))
{
$roll[$i]=$rows['name_category'];
$i++;
}
$total_elmt=count($roll);
?>
<form method="POST" action="">
Select cupcake_category : <select name="sel">
<option>Select</option>
<?php
for($j=0;$j<$total_elmt;$j++)
{
?><option><?php
echo $roll[$j];
?></option><?php
}
?>
</select>
<input name="submit" type="submit" value="Search"/><br />
</form>
<?php
if(isset($_POST['submit']))
{
$value=$_POST['sel'];
$query2 = "SELECT * FROM cupcakes, category, taste WHERE
cupcakes.cupcake_id = category.id_category AND
category.id_category = taste.id_taste AND
category.cupcake_id = taste.cupcake_id";
$result2=mysql_query($query2) or die("Query Failed : ".mysql_error());
while($row=mysql_fetch_array($result2))
{
echo "cupcake name: ".$row['cupcake_name']."<br/>";
echo "price: ".$row['cupcake_price']."<br/>";
}
mysql_close($connect_mysql);
}
?>
发布于 2015-12-30 16:19:13
下面是如何使用PDO完成此操作
$stmt = $pdo->prepare("SELECT * FROM cupcakes
WHERE id_category = :category AND id_flavor = :flavor");
$stmt->bindParam(':category', $_POST['category']);
$stmt->bindParam(':flavor', $_POST['flavor']);
$stmt->execute();查询不需要关联这3个表。它只是从表单输入中获取类别ID和风格ID,并使用它们从第一个表中选择适当的行。
您只需使用其他两个表来填充类别和风格下拉列表。
下面是如何使用过时的mysql扩展而不是PDO执行上述查询:
// Protect against SQL injection
$cat = mysql_real_escape_string($_POST['category']);
$flavor = mysql_real_escape_string($_POST['flavor']);
// Build and run query
$sql = "SELECT * FROM cupcakes
WHERE id_category = {$cat}
AND id_flavor = {$flavor}";
$result = mysql_query($sql);发布于 2015-12-31 07:49:53
在下面的SQL查询中,我可以立即看到一个问题:
SELECT * FROM cupcakes, cupcake category, cupcake flavor WHERE
cupcakes.cupcake_id = cupcake category.id_category AND
cupcake category.id_category = cupcake flavor.id_flavor AND
cupcake category.cupcake_id = cupcake flavor.cupcake_id看起来您有两个表(cupcake category和cupcake flavor),其中有空格。这导致了查询解析器的歧义:您是指一个表,然后是另一个关键字,还是指的是一个表名,其中包含空格?因此,引擎会输出一个错误,因为它不知道如何继续。
但是,如果必须使用空格,则需要使用反号分隔名称:
SELECT * FROM cupcakes, `cupcake category` category, `cupcake flavor` flavor WHERE
cupcakes.cupcake_id = category.id_category AND
category.id_category = flavor.id_flavor AND
category.cupcake_id = flavor.cupcake_id我使用了表别名category和flavor,而不是分隔所有的表别名,我认为这使它更容易阅读。
https://stackoverflow.com/questions/34497181
复制相似问题