我正在使用PHP和MySQL开发一个愿望清单网站,在表中显示产品。用户可以选择将每种产品添加到自己的愿望清单中。
我可以显示产品没有问题,但是一旦用户单击选项添加到他们自己的列表,我什么也得不到。我运行的服务器也没有标记错误,所以我不知道我做错了什么。
任何帮助都将非常感激。我已经包含了下面的代码。
<?php
//connect to db
include('base.php');
//get results from db
$result = mysql_query("SELECT * FROM coffee_machines")
or die(mysql_error());
echo "<table border= '1' cellpadding='10'>";
echo "<tr> <th>ID</th> <th>Brand</th> <th>Description</th> <th>Price(£)</th> <th>image</th> </tr>";
$img_url = "http://localhost:8080/";
//loop through results of db query so items are displayed
while($row = mysql_fetch_array($result)){
// echo out contents of each row
echo '<tr>';
echo '<tr>';
echo '<td>'.$row["Product_ID"].'</td>';
echo '<td>'.$row["Brand"].'</td>';
echo '<td>'.$row["Description"].'</td>';
echo '<td>'.$row["Price"].'</td>';
echo '<td>'.'<img src="'.$img_url.$row['image'].'" /></td>';
echo '<td>'.'<a href = "?Add To List">Add To List</a></td>';
echo '</tr';
echo '</tr';
$add_to_list = "INSERT INTO andrew VALUES('".$row["Product_ID"]."', '".$row["Brand"]."', '".$row["Description"]."', '".$row["Price"]."', '".$row["image"]."')";
if(isset($_POST['Add To List'])){
mysql_query($add_to_list);
}
//close table
echo "</table>";
?>
- 您应该将
$_POST['Add To List']
更改为$_GET['Add To List']
,因为点击链接会生成GET请求。 - 与
?Add To List
你是创建一个变量,你不应该创建变量名与空格 - 没有传递id作为参数或任何识别特定行的方式,因此如果用户单击链接,将设置变量,并且循环中的所有元素都将插入到andrew表中。您应该接收到id并对db 进行新的查询。
echo '<td>'.'<a href = "?id='.$row["Product_ID"].'">Add To List</a></td>';
然后将if
置于循环之外,如
if(isset($_GET['id'])){
$result = mysql_query("SELECT * FROM coffee_machines Where id=".$_GET['id']." LIMIT 1");
$row = mysql_fetch_array($result);
if ($row) {
$add_to_list = "INSERT INTO andrew VALUES('".$row["Product_ID"]."', '".$row["Brand"]."', '".$row["Description"]."', '".$row["Price"]."', '".$row["image"]."')";
mysql_query($add_to_list);
}
}
,但正如已经说过的,您将很快尝试寻找替代mysql_*函数
您可以尝试执行"SELECT id from coffe_machine";然后获取结果也请不要使用mysql函数它们不安全