用php表单和mysql增加按钮点击次数

时间:2012-12-06 15:59:34

标签: php mysql

我是php和mysql的新手,所以我确信这很简单!

我想根据点击的按钮增加特定条目。我遇到的问题是我不知道如何告诉mysql通过php增加哪个条目。

我正在使用while循环来显示我的表,然后在每行的末尾添加一个名为$ $ row [id] value = $ row [likes]的按钮。如果name只是一个单词,那么它就不会有问题,但我需要它根据它所在的行而有所不同。(我使用行ID自动增量,我不显示它但它存在)

我的.html:     

$host="xxx";
$username="xxx";
$password="xxx";
$db_name="xxx";
$tbl_name="blog";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$result = mysql_query("SELECT * FROM $tbl_name ORDER BY id DESC");

echo "<table id='blog'>
<tr>
<th>Update</th>
<th>Likes</th>
</tr>";

while($row = mysql_fetch_array($result)) {
    echo "<tr>";
    echo "<td id='entry'>" . $row['entry'] . "</td>";
    echo "<td id='like'>" . "<form action ='likes.php' method ='post'>" . "<input type='submit' name='$row[id]' value='$row[likes]' />" . "</form>" . "</td>";              
    echo "</tr>"; }
echo "</table>";
mysql_close($con);
?>

我的.php:

<?php
$con = mysql_connect("xxx","xxx","xxx");
if (!$con) {
    die('Could not connect: ' . mysql_error()); }

mysql_select_db("xxx", $con);

if(mysql_query("UPDATE blog SET likes = likes +1 WHERE id = '$_POST[$id]'")) {
    header('location:blog.php'); }
else {
    echo "Error: " . mysql_error(); }
mysql_close($con);
?> 

我想要做的就是将html文档中的'input name = $ row [id]'与WHERE id = $ _POST [id]相关联,这样它就会在按钮点击时增加相似数量。

先谢谢!!

1 个答案:

答案 0 :(得分:1)

使用表单中的隐藏输入告诉PHP端要递增的条目。

echo "<td id='like'><form action ='likes.php' method ='post'><input type='hidden' name='id' value='" . (int)$row['id'] . "' /><input type='submit' name='submit' value='" . (int)$row['likes'] . "' /></form></td>";

查询行应为:

if(mysql_query("UPDATE blog SET likes = likes +1 WHERE id = '" . (int)$_POST['id'] . "'")) {

注意我将ID转换为(int),这会阻止查询中的SQL注入,并在输出时阻止XSS。

提交按钮对于数据的传输是不可靠的,这是因为在某些情况下并非所有浏览器实际上都将提交按钮作为POST / GET变量发送。

我注意到的另一件事是使用了这个语法$row[likes],它应该是:

$row['likes']

如果您不包含引号,则PHP首先将likes视为常量,如果未定义,则以字符串形式返回。