我的网站http://zabavajsa.eu/new/上有一个类似的按钮。 当你点击按钮时,它会像数据库一样添加+1,但它不起作用。
这是我的代码:
<form method='post'>
<li>
<button class='like' name='like' value='48'>Like</button>
</li>
</form>
<?php
if(isset($_POST['like'])) {
$id = $_POST['like'];
require('db.php');
$resultiiik = $mysql->query("SELECT * FROM fotka WHERE id='{$id}'");
$p = $resultiiik->fetch_assoc();
$pocet = $p[like];
$pocet = $pocet +1;
$mysql->query("UPDATE fotka SET like='{$pocet}' WHERE id='{$id}'") or die ('This always write to me -.-');
}
?>
答案 0 :(得分:4)
首先,这个
<button class='like' name='like' value='48'>Like</button>
它需要&#34;类型&#34;,让我们使用&#34;提交&#34;型
<button class='like' name='like' value='48' type='submit'>Like</button>
然后单词like
是一个MySQL保留字,需要用ticks
SET `like`
LIKE
用于字符串比较和模式匹配
因此,最好不要使用保留字。您可以使用&#34; 赞&#34;相反,并且不会要求对列进行转义,或者如上所述并将其包装在反引号中。
您还没有让MySQL通过
发出正确的错误信号or die ('This always write to me -.-')
使用
or die(mysqli_error($mysql))
或
die('There was an error running the query [' . $mysql->error . ']')
这会引发类似的事情:
错误:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便使用“
”附近的正确语法
编辑: 如评论中所述,您的代码很容易受到SQL注入的攻击。</ p>
答案 1 :(得分:1)
除了@Fred -ii-还有2个错误:
$pocet = $p[like];
喜欢是一个常数,但是因为你从未定义一个名为&#39;的常量。 php会将它视为字符串,并在启用时打印通知。您应该使用$pocet = $p['like'];
代替$pocet = $p[like];
并且:您不需要获取值来增加和更新它。您的数据库可以为您完成工作:
UPDATE fotka SET `like`=`like`+1 WHERE id='{$id}'