簡體   English   中英

SQL 和 PHP 問題

[英]SQL and PHP problems

這個查詢有什么問題?

$query3 = "INSERT INTO Users 
             ('Token','Long','Lat') 
           VALUES 
             ('".$token."','".$lon1."','".$lat."')";

你有幾個問題。

  1. 列名應該反引號轉義,而不是引用(LONG 也是 MySQL 中的數據類型,因此它是保留的,必須反引號轉義)。
  2. 如果那些 arguments 沒有被轉義,那么你有 SQL 注入問題。
  3. 如果它不起作用,您應該向我們提供mysql_error()的結果。

嘗試運行此代碼:

$token   = mysql_real_escape_string($token);
$lon1    = mysql_real_escape_string($lon1);
$lat     = mysql_real_escape_string($lat);

$query3  = "INSERT INTO `Users` (`Token`, `Long`, `Lat`) 
           VALUES ('{$token}', '{$lon1}', '{$lat}')";
$result3 = mysql_query($query3) or die("Query Error: " . mysql_error());

如果這仍然不起作用,請給我們生成的錯誤消息。

Longmysql 保留字,保留字需要用反引號括起來

$query3 = "INSERT INTO Users 
             (`Token`,`Long`,`Lat`) 
           VALUES 
             ('".$token."','".$lon1."','".$lat."')";
  1. 您在字段名稱周圍使用單引號。 這在我知道的任何 SQL 變體中均無效。 擺脫它們或以正確的方式引用字段名稱以適合您的 SQL 風格。
  2. 您的代碼可能存在 SQL 注入漏洞,除非您遺漏了轉義$token等的代碼
  3. 您不應該像這樣將值放入 SQL 字符串中。 這不是 1990 年代 - 我們現在有參數化查詢。
  4. mysql_函數使得正確進行查詢有點困難。 切換到 mysqli 或 PDO。

暫無
暫無

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

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