为什么在PHP/MySQL中会出现SQLSTATE42000错误
我正在做一个使用PHP和MySQL的项目 我有一个HTML表,它有3列,我从MySQL中的“任务”表将数据加载到其中。这些列包括:为什么在PHP/MySQL中会出现SQLSTATE42000错误,php,mysql,xampp,localhost,Php,Mysql,Xampp,Localhost,我正在做一个使用PHP和MySQL的项目 我有一个HTML表,它有3列,我从MySQL中的“任务”表将数据加载到其中。这些列包括:id、taskname和一个按钮列,单击该按钮列可将您带到相关任务的Edit页面(我将任务id作为URL传递)-http://localhost/tasks/?edit&id=3 当我尝试加载有关此任务的详细信息时,问题就出现了。代码如下: if(isset($_GET["id"])) { try { $sq
id
、taskname
和一个按钮列,单击该按钮列可将您带到相关任务的Edit
页面(我将任务id作为URL传递)-http://localhost/tasks/?edit&id=3
当我尝试加载有关此任务的详细信息时,问题就出现了。代码如下:
if(isset($_GET["id"]))
{
try
{
$sql = "SELECT * FROM tasks WHERE id = :id";
$result = $pdo->prepare($sql);
$result->bindValue(":id", $_GET["id"]);
$result = $pdo->query($sql);
}
catch(PDOException $e)
{
$error = "Error trying to load task - " . $e->getMessage();
include "error.php";
exit();
}
foreach($result as $task)
{
$tasktext = $task["task"];
$id = $task["id"];
}
$title = "Edit task";
$action = "edittask";
$button = "Edit task";
include 'form.php';
exit();
resetParameters();
我得到以下错误:
尝试加载任务时出错-SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“:id”附近使用的正确语法
例如,当我将其中id=:id
替换为其中id=3
时,它可以工作并加载有关任务的详细信息,但我无法让它加载有关我在上一屏幕中单击的任务的详细信息
是否有人能发现我的代码/逻辑有任何错误,并为我指出正确的方向?在使用准备好的查询时,您需要使用not:
- PDOStatement::execute-执行准备好的语句
- 查询-执行SQL语句
尝试:
谢谢您的帮助。它起作用了!那么为什么我用3替换:id时它会起作用呢?因为query()用于原始查询,例如没有绑定参数。请理解,非常感谢您的帮助。我将在几分钟内接受答案,因为它不让我现在接受。NP,很高兴能提供帮助,我为这两种PDO方法的手册添加了一些链接。
<?php
try
{
$sql = "SELECT * FROM tasks WHERE id = :id";
$query = $pdo->prepare($sql);
$query->bindValue(":id", $_GET["id"]);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $e)
{
$error = "Error trying to load task - " . $e->getMessage();
include "error.php";
exit();
}
?>