mysql UPDATE代码不起作用:((

时间:2014-12-07 14:00:55

标签: php mysql

我的网站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 -.-');
}
?>

2 个答案:

答案 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>

使用prepared statementsPDO with prepared statements他们更安全

答案 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}'