php - MySQL查询错误: "You have an error in your SQL syntax; ..."

标签 php mysql

我目前正在为我的移动应用程序编写 API。当我在研究注销方法时,我看到了奇怪的 MySQL 错误:

“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行‘1’附近使用的正确语法”

API 请求:thapi.php?q=logout&user=1&session=aaa

我尝试在 SELECT 语句中添加",但它没有解决我的问题。

这是我的代码:

 mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
 mysql_select_db(DB_BASE);
 $q = "SELECT * FROM `system_sesje` WHERE `sesjaid` = \"" + $_GET['session'] + "\" AND `user` = " + $_GET['user'];
 $a = mysql_query($q);
 echo mysql_error();
if(mysql_num_rows($a) == 0)
 {
  $returning = array('error' => 'Invalid session id');
  echo json_encode($returning);
  break;
 }

我的表结构:

HERE

最佳答案

解决办法如下:

$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_BASE;
$opt = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    )
$conn = new PDO( $dsn, DB_USERNAME, DB_PASSWORD, $opt );
$stmt = $conn->prepare("SELECT * FROM `system_sesje` WHERE `sesjaid` = ? AND `user` = ?");
$stmt->bindParam( 1, $_GET['session'], PDO::PARAM_STR );
$stmt->bindParam( 2, $_GET['user'], PDO::PARAM_INT );
$stmt->execute();
if( $stmt->rowCount() == 0 ) {
    $returning = array('error' => 'Invalid session id');
    echo json_encode($returning);
    break;
}

关于php - MySQL查询错误: "You have an error in your SQL syntax; ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642166/

相关文章:

php - 防止使用 SELECT...LOCK IN SHARE MODE 的 php 应用程序中的 mysql 死锁

php - 如何从 sql 数据库的一列填充 php 数组?

MySql 根据逗号分隔值的输入更新计数

php - 在 php 中检测到 'flush tables with read lock'

PHP 邮件功能将 x-msg 添加到所有链接...?

php - 无法从 Mysql-PHP 获取所有记录

php - Composer 不安装

PHP strtotime "2 Sunday ago"

MySQL连接查询多个匹配条件

mysql - 用于通过一个输出对多个字符串进行计数的 SQL 查询