簡體   English   中英

盡管一切正確,但MySQL查詢語法錯誤

[英]MySql query syntax error despite everything being correct

所有服務器詳細信息都正確放置,並且連接確實發生了,我似乎找不到輸出中顯示的語法錯誤。

<?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行的'key)VALUES(9999,'ywfjj2dtc')'附近使用正確的語法

KEYMySQL的保留關鍵字 您必須將其括在反引號中,才能用作列或表的標識符。

$sql="INSERT INTO buser (phone, `key`) VALUES (".$phn.",'".$key."')";

您的腳本容易受到當前形式的SQL注入的攻擊。 至少必須$phn的值調用mysql_real_escape_string()

$phn = mysql_real_escape_string($_GET['phn']);  

從長遠來看,考慮切換到支持預准備語句的API,例如MySQLi或PDO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM