Php - MySQL从表中选择数据,然后更新同一个表

时间:2016-05-18 17:22:03

标签: php mysql

此代码有什么问题?

$sql=mysql_query("SELECT * FROM table WHERE id='$id'");
if($data=mysql_fetch_array($sql))
    {
$count=$data['count'];
$new_count=$count+1;
$sqla="UPDATE table SET count='$new_count' WHERE id='$id'";
if(mysql_query($sqla))
{
echo "success";
}

除了UPDATE查询外,一切正常。

当我添加

echo $new_count;

它返回正确的值。

1 个答案:

答案 0 :(得分:2)

首先:

在第二个SQL查询中:

$sqla="UPDATE table SET count='$new_count'";

您需要指定要更新的行/行。为此,您必须使用WHERE子句。

例如:

$sqla="UPDATE table SET count='$new_count' WHERE id='$id'";

第二名:

您的情况中缺少},这也可能是问题所在。如果我将代码空间化,它将如下所示:

$sql=mysql_query("SELECT * FROM table WHERE id='$id'");
if($data=mysql_fetch_array($sql))
{
  $count=$data['count'];
  $new_count=$count+1;

  $sqla="UPDATE table SET count='$new_count' WHERE id='$id'";
  if(mysql_query($sqla))
  {
    echo "success";
  }

您的情况(从第二行开始)是否正确结束了}

第三名:

mysql_fetch_arraymysql_query的输出保存到变量中,然后在您的条件中使用此变量:

$data = mysql_fetch_array($sql);
if($data) { ...

$result = mysql_query($sqla);
if($result) { ...

<强>脚注:

不知道您使用的表名是否确实称为table

如果是,那么这是一个MySQL保留字,它需要特别注意,如将其包装在刻度中或将其命名为保留字以外的其他内容。

即:

SELECT * FROM `table`

UPDATE `table`

参考: