我试图让这个计数器与 pdo 一起使用,但它一直提示解析错误:
syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in line 37.
我不确定这是否是索引,因为我的数据库名称是 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; ?>
最佳答案
您的代码有很多错误。
- 没有函数
mysqle_select_db()
。有一个名为mysql_select_db()
,但由于您使用的是 PDO,您可能想要使用$conn->query('use group2')
(如果有的话) . - 您正在使用尚未设置的变量运行查询。
$conn->query($sql);
仅往下两行是行不通的。 - 方括号在表名称中无效,
+
也不是有效的查询列。SELECT + FROM counter[counter]
根本不起作用。您可能打算执行SELECT * FROM counter
。 - 您的查询不会返回任何内容,但我很确定它不会返回
counter[counter]
列。你可能只想做$counter=$row['counter'];
(是的,你可以欺骗 MySQL 在列名中使用方括号,但这很可能不是这里的意图) - 最后但并非最不重要的一点是,您的 UPDATE 查询不仅发出两次(一次使用 PDO,一次通过 mysql_* lib),而且还是错误的。它很可能应该是
$insertNew = $conn->("UPDATE counter SET counter = '$add'");
,假设您的counter
表有一个计数器
列。
编辑:
通过一些小细节,您的脚本看起来不错。
- 您可能不应该发布您的数据库密码。
- 您的一个数据库查询没有做太多事情:
$conn->query($sql);
- 您在下一行再次执行此操作。 - 您的计数器将从 2 而不是 1 开始,因为您在插入后进行更新(UPDATE 不在
if
语句的else
部分中,因此它会在所有情况下运行)
如果它仍然不起作用,您应该尝试将 echo/print_r/var_dump 语句放入代码中以查看它在哪里损坏 - 例如:
print_r($conn->errorInfo());
将为您提供有关 PDO 内部错误的信息。
echo "$counter";
将为您提供选择的结果。
print_r($conn->errorInfo());
关于php - 命中计数器sql错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465711/