2013-10-19 85 views
2
$nam=$_POST['name']; 
$fname=$_POST['family']; 
$dat=$_POST['date']; 
$bal=$_POST['balance']; 
$curr=$_POST['currency']; 
$con=mysql_connect('localhost', 'xxxx', 'xxxx', 'xxxx'); 
$db=mysql_select_db('users',$con); 
$ins=mysql_query("INSERT INTO users (Name, FamilyName, Date, Balance, Currency) VALUES ('$nam', '$fname', '$dat', '$bal', '$curr'))",$con); 
if (!mysql_query($ins,$con)) 
{ 
die('Error: ' . mysql_error($con)); 
} 

所以,大家好,我得到了這段代碼,我正在嘗試做類似於註冊表單的操作。我有tripple檢查變量的名稱和查詢本身在SQL數據庫中執行時正在工作。問題是,當我把它包含在我的PHP腳本中時,它返回Query是空的。我環顧四周,但Web上的所有錯誤都是圍繞不分配給變量或具有多個插入語句等等。所以我的問題是,爲什麼我在從Web表單輸入數據時得到這個結果?錯誤:查詢爲空錯誤:查詢是空的

P.S. 好的,我是這樣做的:我刪除了你說的第二次檢查,即if(!mysql_query($ ins,$ con)){die('Error:'。mysql_error($ con)) ; }部分現在我得到執行,但它並沒有真正添加到數據庫的條目,我不能稱它。這是新的名字。

+0

'的mysql_connect( 'localhost' 的, 'XXXX', 'XXXX', 'XXXX')或死亡(mysql_error()) ;''''mysql_select_db('users')or die(mysql_error());'go – samayo

+0

對'mysql_query()'做同樣的事情' – samayo

+0

不要使用'mysql_ *'函數,它們被棄用,使用'mysqli_ *功能。並且使用預準備語句,您的查詢容易受到SQL注入的影響 – BackSlash

回答

3

你基本上嘗試使用mysql_query()兩次:

$ins=mysql_query("INSERT INTO users (Name, FamilyName, Date, Balance, 
Currency) VALUES ('$nam', '$fname', '$dat', '$bal', '$curr'))",$con); 

if (!mysql_query($ins,$con)) 
{ 

$ins將包含一個有效的MySQL的資源,如果查詢被正確執行,但你試圖在if條件再次使用它。

單從條件中刪除mysql_query()部分,像這樣:

if(!$ins) { 
    # code ... 
} 

這應該可以解決這個特別問題。但請注意,您的代碼無法使用SQL injection。另外,mysql_*函數已被棄用,並且很快被刪除。我建議你切換到MySQLi或PDO並開始使用參數化查詢來保證安全。

+0

您的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第1行'''附近使用正確的語法這是我現在通過測試查詢得到的。而我沒有任何)在線1附近的任何地方,你可以檢查上面的代碼。 –

0

這是不正確

if (!mysql_query($ins,$con)) 

你爲什麼要執行查詢的查詢?

只是使用if (!$ins||!$con)),如果你想查詢,如果查詢和連接已經成功