我有一个 php 文件,它充当程序和数据库之间的抽象。我尝试让它返回一个值,但收到此错误:
ERROR: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ': USERNAME
ORDER BY id DESC
LIMIT 1' at line 2
我的 API 的完整代码如下:
<?php
header("Content-Type: application/json; charset=UTF-8");
require 'UHCauth.php';
try {
$conn = new PDO("mysql:host=$mysql_serv;dbname=$mysql_db",
$mysql_user, $mysql_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
if(isset($_GET['USERNAME'])) {
$USERNAME = $_GET['USERNAME'];
$stmt = $conn->prepare(
"SELECT * FROM $mysql_table
WHERE USERNAME = : USERNAME
ORDER BY id DESC
LIMIT 1"
);
$stmt->execute(array('USERNAME' => $USERNAME));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($row);
} else {
$stmt = $conn->prepare(
"SELECT * FROM $mysql_table
ORDER BY
McVersion DESC,
ModVersion DESC
LIMIT 1"
);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
它应该采用用户名并以 JSON 格式返回该用户名的行。该代码之前曾在不同的项目中工作过,但现在决定不起作用。
最佳答案
改变这个
WHERE USERNAME = : USERNAME
^--//dont make sapce here
至
WHERE USERNAME = :USERNAME
关于php - pdo中的参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422213/