如何在PHP中一次执行两个数据库查询?

时间:2014-05-05 00:06:26

标签: php html mysql sql

我有两个查询,但我可以将它们作为一个

$sql = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$sql = ("UPDATE table SET views = views+1 where title='$title' ");
$query = mysql_query($sql) or die("Error Connecting To db");

目前第二个工作但不是第一个。

2 个答案:

答案 0 :(得分:2)

这是你的代码:

$sql = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$sql = ("UPDATE table SET views = views+1 where title='$title' ");
$query = mysql_query($sql) or die("Error Connecting To db");

首先,第一个$sql将无法运行,因为您在下一行中使用新内容覆盖了第一个$sql的内容。

然后只看你的逻辑,这是你的第一个问题:

SELECT * FROM table WHERE title='$title' LIMIT 1

我认为这是为了获得title等于$title而不是其他的条目,对吧?但接下来你的下一个问题是:

UPDATE table SET views = views+1 where title='$title'

无论如何,您正在更新title='$title'的值。所以甚至不需要第一个查询。所以问题解决了吧?那么您可能希望将LIMIT 1添加到第二个查询中,如下所示:

UPDATE table SET views = views+1 where title='$title' LIMIT 1

但老实说,根据项目title是否匹配更新数据库的逻辑似乎很混乱。如果两个项目的标题相同怎么办?是的,你是按1限制事物,但按什么标准限制?如果您有三个具有相同标题的项目,这些项目会更新吗?

您的应用结构需要更多区别。但我认为这对于什么本质上是一个新手问题是公平的。

答案 1 :(得分:0)

分别运行两个查询

$sql1 = ("SELECT * FROM table WHERE title='$title' LIMIT 1");
$qry  = mysql_query($sql1);
if (mysql_num_rows($qry) > 0)
{
  while ($res = mysql_fetch_object($qry))
  {
  // -- contents --
  }


  $sql = ("UPDATE table SET views = views+1 where title='$title' ");
  $query = mysql_query($sql) or die("Error Connecting To db");
}