2013-09-21 74 views
0

這是爲了從URL中獲取數據並將其提交給數據庫,並且出現錯誤: 查詢是空的;MySQL查詢爲空

我把一些更多的東西在那裏測試,是的,它給出了我設置的變量的值。在此先感謝

<?php 
require 'variables.php'; 
if(empty($_REQUEST['Key']) || empty($_REQUEST['Computer']) || empty($_REQUEST['Panel'])){ 
die("Nothing was given for me to give back :("); 
}else{ 
$key = $_REQUEST['Key']; 
$computer = $_REQUEST['Computer']; 
$panel = $_REQUEST['Panel']; 
$insertquery = mysql_query("INSERT INTO keys (Key, PC, Panel) VALUES ('".$key."', '".$computer."', '".$panel."')"); 
$sql = mysql_query($insertquery); 
if($sql){ 
    echo "good ". mysql_error(); 
}else{ 
    echo "bad ". mysql_error(); 
    echo "<br />".$key." ".$computer." ".$panel.""; 
} 
} 

?> 
+0

在這裏看到的 - http://stackoverflow.com/questions/636032/why-do-i-get-the-mysql-error-query-是空的?rq = 1 –

回答

0

要調用mysql_query()兩次。這就是問題所在

做這樣

<?php 
require 'variables.php'; 
if(empty($_REQUEST['Key']) || empty($_REQUEST['Computer']) || empty($_REQUEST['Panel'])){ 
die("Nothing was given for me to give back :("); 
}else{ 
$key = $_REQUEST['Key']; 
$computer = $_REQUEST['Computer']; 
$panel = $_REQUEST['Panel']; 
$insertquery = "INSERT INTO keys (Key, PC, Panel) VALUES ('".$key."', '".$computer."', '".$panel."')"; 
$sql = mysql_query($insertquery); 
if($sql){ 
    echo "good ". mysql_error(); 
}else{ 
    echo "bad ". mysql_error(); 
    echo "<br />".$key." ".$computer." ".$panel.""; 
} 
} 

?> 
+0

我試過了,不知道爲什麼我把mysql_query()兩次,雖然哈哈。但刪除第二個查詢給我你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的鍵(鍵,PC,面板)上使用正確的語法VALUES('1','2','3')' – user2802113

+0

@ user2802113參見Jason OOO's回答 – Barmar

0

1.您的查詢包含兩個保留字keykeys您需要使用反引號將它們封閉(`):

INSERT INTO `keys` (`Key`, PC, Panel) 

可以避免此通過更改列名稱。

2.您很容易被SQL注入,切換到PDO或MySQLi並使用參數化查詢。

+0

這是真的,但它不會導致「查詢是空的」錯誤,它會導致不同的錯誤。 – Barmar

+0

@Barmar,是的。 –

0

密鑰是一個mysql敏感詞(保留字)。 - read more

您正在調用mysql_query兩次。 你的SQL查詢應該是這個樣子:

mysql_query("INSERT INTO keys (`Key`, `PC`, `Panel`) VALUES ('".$key."', '".$computer."', '".$panel."')"); 

這應該有希望的工作。

0

問題是與此代碼:

$insertquery = mysql_query("INSERT INTO keys (Key, PC, Panel) VALUES ('".$key."', '".$computer."', '".$panel."')"); 
$sql = mysql_query($insertquery); 

Your're傳入的mysql_query結果成mysql_query。你應該改變,要:

$sql = mysql_query("INSERT INTO `keys` (`Key`, PC, Panel) VALUES ('$key', '$computer', '$panel')"); 

順便說一句,你需要逃避你的數據(SQL注入..),並使用數據庫連接一個新的API(庫MySQLi/PDO)。

0

正確的代碼

<?php 
    require 'variables.php'; 
    if(empty($_REQUEST['Key']) || empty($_REQUEST['Computer']) || empty($_REQUEST['Panel'])){ 
    die("Nothing was given for me to give back :("); 
    }else{ 
    $key = $_REQUEST['Key']; 
    $computer = $_REQUEST['Computer']; 
    $panel = $_REQUEST['Panel']; 
    $insertquery = ("INSERT INTO keys (Key, PC, Panel) VALUES ('".$key."', '".$computer."', '".$panel."')"); 
    $sql = mysql_query($insertquery); 
    if($sql){ 
     echo "good ". mysql_error(); 
    }else{ 
     echo "bad ". mysql_error(); 
     echo "<br />".$key." ".$computer." ".$panel.""; 
    } 
    } 

?> 
0

它可能是一個數據庫連接的問題,您使用的mysql_query兩次是沒有必要的。至於保留關鍵字而言試着寫他們喜歡

$insertquery = mysql_query("INSERT INTO keys (`Key`, `PC`, `Panel`) VALUES ('".$key."', '".$computer."', '".$panel."')");