php - pdo中的参数错误

标签 php mysql database api

我有一个 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/

相关文章:

mysql - MySQL 有没有办法禁止未索引的查询?

mysql - 使用MySQL找出平均值

java - "Column count doesn' t匹配值计数在第1行”程序错误

c# - 使用 RESTful Web 服务从 MySql 数据库中检索数据

php - 使用 PHP 将 MySQL-spatial 更改为 geoJson

mysql - 优化的SQL查询

c# - LinqPad nutshell 数据库有 SQLite 版本吗

php - 在 PHP ISSET 函数中使用 HTML 表单

php - 使用 Carbon 获取该月上周的星期日

php - 从两列的 MySQL 表中查找相同的值