点击计数器sql错误

时间:2013-03-17 20:17:38

标签: php mysql sql arrays

我正试图让这个打击计数器与pdo一起工作,但它一直在抱怨Parse错误:

  

语法错误,意外'(',期待标识符(T_STRING)或   第37行中的变量(T_VARIABLE)或“{”或“$”。

我不确定它是否是索引,因为我的数据库名称是group2,有一个表计数器和一个名为counter的列。我也尝试过使用mysql程序方法,但是我对其中的任何一个都不熟悉,而且我使用过的每个指南仍然提到了这些错误。我做错了什么。

*编辑新代码:

<?php
try
{
$dsn = "mysql:host=xxxxxxxxxxxxxx"; // Missing semi colon (;)
$conn = new PDO($dsn,'group2', 'xxxxxxxxxxxx');  //connection
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOexception $e)
{
Print($e->getMessage());
Exit;
}


$sql = ("SELECT * FROM counter");
$conn->query($sql);
$row = $conn->query($sql);
$counter =$row['counter'];

if(empty($counter))
{

$counter = 1; 
$insert = $conn->query("INSERT INTO counter VALUES('$counter')");  
}

$add= $counter+1;
$insertNew = $conn->("UPDATE counter SET counter = '$add'"); 
echo $counter;

?>


<?php $conn = null; ?>

1 个答案:

答案 0 :(得分:1)

您的代码存在 lot 错误。

  1. 没有功能mysqle_select_db()。有一个名为mysql_select_db(),但由于您正在使用PDO,因此您可能希望使用$conn->query('use group2'),如果有的话。
  2. 您正在使用尚未设置的变量运行查询。 $conn->query($sql);只需要向下两行就行了。
  3. 方括号在表名中无效,+也不是有效的查询列。 SELECT + FROM counter[counter]只是行不通。你可能打算做SELECT * FROM counter
  4. 您的查询不会返回任何内容,但我很确定它不会返回counter[counter]列。你可能只想做$counter=$row['counter'];(是的,你可以让MySQL在列名中使用方括号,但这很可能不是这里的意思)。
  5. 最后但并非最不重要的是,您的UPDATE查询不仅发出两次(一次使用PDO,一次使用mysql_ * lib),但也是错误的。如果您的$insertNew = $conn->("UPDATE counter SET counter = '$add'");表格中有counter列,则最有可能阅读counter
  6. 编辑:

    有一些小细节,你的脚本看起来还不错。

    1. 你可能不应该发布你的数据库密码。
    2. 您的一个数据库查询没有做太多工作:$conn->query($sql); - 您在下一行再次执行此操作。
    3. 您的计数器将以2而不是1开头,因为您在插入后正在更新(UPDATE不在else语句的if部分,因此它将在所有情况下运行)
    4. 如果它仍然不起作用,你应该尝试将echo / print_r / var_dump语句放入代码中以查看它在哪里 - 例如:

      print_r($conn->errorInfo());将为您提供有关PDO内部错误的信息。 echo "$counter";将为您提供选择的结果。

      的print_r($ conn-&GT; errorInfo中());