0

我正在尝试为我的论坛创建一个函数,它将我的用户的“帖子”属性增加 1。无论出于何种原因,以下 PHP 不起作用。

function postCountIncrease($username) {
    //get the connection variable
    global $con;
    //change to the users database (this function works correctly)
    sqlconnect_users();
    //get current post number (this is also working)
    $getCurrentPosts = "SELECT Posts\n"
    . "FROM users\n"
    . "WHERE Username='".$username."'";
    $query1 = mysqli_query($con, $getCurrentPosts) or die(mysqli_error($con));
    $currentPosts = mysqli_fetch_array($query1);
    //here is the problematic post.  Assume that $username is a valid value, and that I've already done mysqli_real_escape_string() on it
    $incrementPostsQuery = "UPDATE users.users SET Posts=". $currentPosts[0]+1 ." WHERE Username='". $username ."'";
    $query2 = mysqli_query($con, $incrementPostsQuery) or die(mysqli_error($con));
    //return the result
    $result = mysqli_fetch_array($query2);
    return $result;
}

老实说,我看不出我做错了什么,因为 SQL 工作正常。如果我UPDATE users.users SET Posts=1 WHERE Username='Lampitosgames'在控制台中使用,它可以正常工作。非常感谢帮助。此外,这是它向我抛出的错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 WHERE Username='Lampitosgames''
4

3 回答 3

1

你不能这样连接"toto ".$var+1,你必须用括号括起来"toto ".($var+1)

在您的情况下,这是 var 的声明$incrementPostsQuery失败

于 2013-09-28T22:44:49.193 回答
0

看看你的错误,你的语法是关闭的

$getCurrentPosts = "SELECT Posts 
                    FROM users 
                    WHERE Username='$username'";
于 2013-09-28T22:39:31.593 回答
0

错误在于您的查询的构建。

$incrementPostsQuery = "UPDATE users.users SET Posts=". $currentPosts[0]+1 ." WHERE Username='". $username ."'";

我会建议你一些技巧来创建这样的查询:

  • "更新表设置字段 = 值"; // 可以直接写值
  • “更新表集字段=”。$价值; // 简单的
  • “更新表集字段=”。($a+$b); // ...
  • "更新表集字段 = {$value}"; // 你可以添加一个带花括号的变量
  • "更新表集字段 = {$va[3]}"; // 更简洁的方式
  • "更新表集字段 = {$a->b}"; // 一个对象字段
于 2013-09-29T00:07:02.620 回答