首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql查询语法错误,尽管所有内容都是正确的

MySql查询语法错误,尽管所有内容都是正确的
EN

Stack Overflow用户
提问于 2013-02-04 15:45:47
回答 1查看 673关注 0票数 0

所有服务器详细信息都正确放置,并且连接确实正确进行,我似乎找不到输出中显示的语法错误。

代码语言:javascript
复制
<?php
    ob_start();
    $phn=$_GET['phn'];
    $con = mysql_connect("<server>","<user>","<pass>") or die('error' . mysql_error());
    $db_selected = mysql_select_db('<db name>', $con);
    if (!$db_selected) {
        die ('Can\'t use user : ' . mysql_error());
    }
    $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
     $key= '';
     for ($i = 0; $i < 9; $i++) {
          $key.= $characters[rand(0, strlen($characters) - 1)];
     }
     echo $key;
    $sql="INSERT INTO buser (phone, key) VALUES (".$phn.",'".$key."')";
    if($result = mysql_query($sql ,$con) or die ('Error: '.mysql_error ()))
    {
    $q="SELECT * FROM buser WHERE phone=$phn";
    $idd=mysql_query($q,$con) or die ('Error: '.mysql_error ());
    while($row = mysql_fetch_assoc($idd))
      {
      $id=$row['bid'];
      }
    }
     ?>

输出:

错误:您的SQL语法出现了错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行使用接近“键”值(9999,“ywfjj2dtc”)的正确语法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-04 15:46:41

KEYMySQL保留关键字。必须将其括在后面,才能将其用作列或表标识符。

代码语言:javascript
复制
$sql="INSERT INTO buser (phone, `key`) VALUES (".$phn.",'".$key."')";

您的脚本容易受到当前形式的SQL注入的攻击。至少,必须对mysql_real_escape_string()的值调用$phn

代码语言:javascript
复制
$phn = mysql_real_escape_string($_GET['phn']);  

从长远来看,考虑切换到支持预先准备好的语句的API,比如MySQLi或PDO。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14690217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档