Php 命中计数器sql错误
我试图让这个命中计数器与pdo一起工作,但它不断抱怨解析错误: 语法错误,意外的“(”,应为标识符(T_字符串)或 变量(T_变量)或第37行中的“{”或“$” 我不确定是否是索引,因为我的数据库名为group2,带有一个表计数器和一个名为counter的列。我也尝试过使用mysql过程方法,但我对这两种方法都不太熟悉,我使用的每一个指南都会出现这些错误。我做错了什么 *编辑新代码:Php 命中计数器sql错误,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我试图让这个命中计数器与pdo一起工作,但它不断抱怨解析错误: 语法错误,意外的“(”,应为标识符(T_字符串)或 变量(T_变量)或第37行中的“{”或“$” 我不确定是否是索引,因为我的数据库名为group2,带有一个表计数器和一个名为counter的列。我也尝试过使用mysql过程方法,但我对这两种方法都不太熟悉,我使用的每一个指南都会出现这些错误。我做错了什么 *编辑新代码: <?php try { $dsn = "mysql:host=xxxxxxxxxxxxxx"; // Mi
<?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\u select\u db()
。有一个函数名为mysql\u select\u db()
,但由于您使用的是PDO,因此如果有可能,您可能希望使用$conn->query('use group2')
您正在使用尚未设置的变量运行查询。$conn->query($sql);
再往下两行就不行了
方括号在表名中无效,+
也不是有效的查询列。SELECT+FROM counter[counter]
根本不起作用。您可能想执行SELECT*FROM counter
您的查询不会返回任何内容,但我很确定它不会返回计数器[counter]
列。您可能只是想执行$counter=$row['counter'];
(是的,您可以欺骗MySQL在列名中使用方括号,但这很可能不是本文的目的)
最后但并非最不重要的一点是,您的更新查询不仅发出了两次(一次使用PDO,一次通过mysql_*lib),而且还出现了错误。假设您的计数器
表中有计数器
列,它很可能会读成$insertNew=$conn->(“更新计数器集计数器='$add');
编辑:
通过一些小细节,您的脚本看起来不错
您可能不应该发布数据库密码
您的一个数据库查询做得不多:$conn->query($sql);
-您在下一行再次执行该操作
您的计数器将以2而不是1开始,因为您在插入后正在更新(更新不在if
语句的else
部分,因此它将在所有情况下运行)
如果它仍然不起作用,您应该尝试将echo/print\r/var\u dump语句放入您的代码中,以查看它在哪里崩溃-例如:
print\r($conn->errorInfo());
将为您提供有关PDO内部错误的信息。
echo“$counter”
将为您提供选择的结果
print_r($conn->errorInfo());真的不确定这里的目的是什么。counter[counter]
真的是一个列名吗?当您使用PDO时,mysqle\u select\u db()
用于什么(而且拼写错误)?以及“从counter[counter]选择+”是什么“实际执行”要访问表“counter”中的列“counter”,语法应该是“counter.counter”。它的$insertNew=$conn->(“更新计数器集计数器[counter]=(“$add”)”);列名是计数器表中的计数器,所以它只是计数器而不是计数器[counter]?好的,我更改了您所说的一切,$conn->query('use group2'))虽然删除mysql_select和$conn->query都会导致相同的t字符串错误,但除了另一个错误外,没有产生任何其他错误。现在我开始怀疑这是否是因为我的表是如何创建的:CREATE tablegroup2
counter
(counter
INT NOT NULL默认值0,主键(counter
);如果有太多的更改,您可能应该在问题中添加新的代码。我相应地更改了答案,$conn->query($sql);$result=$conn->query($sql);$insertNew=$conn->query(“更新计数器集计数器='$add'));查询不存在。小错误。非常感谢您的帮助