2013-12-12 85 views
-1

取回我的HTML代碼數據不是從MySQL通過PHP

<form action="authentication.php" method="post" enctype="multipart/form-data"> 
      <input type="text" id="txtbox" class="txt_box" name="user" value="Username" /> 
      <input type="password" id="txtbox1" class="txt_box_pass" name="pass" value="Password" /><br /> 
      <div id="radio"> 



    <input type="submit" value=" " name="submit" class="submit" /> 
    </div> 

    </form> 

這段代碼放在authentication.php文件:

<?php 


$dbvar = mysqli_connect("localhost","root","","cart"); 

//Check Database Conectivity 

if(mysqli_errno()) 
{ 
    "Failed to connect to database" . mysqli_error(); 
} 

$query = "select * from admin where first_name = '$_POST[user]' and password = '$_POST[pass]'"; 

$check = mysqli_query($dbvar,$query); 

$count = mysqli_num_rows($check); 

if($count != 0) 
{ 
    header('location: upload_product_code.php'); 
} 
else 
{ 
    echo "Wrong Username or Password"; 
} 

?> 

我在表中只有一個值,所以應該選擇當我輸入有效的用戶名和密碼時它就起來了。但它顯示一個錯誤,稱爲 警告:mysqli_errno()期望恰好在C:\ wamp \ www \ php \ Mobil India \ authentication.php中給出的第1行參數,第16行

並且文本錯誤用戶名和密碼錯誤。我如何使它工作,以便當我輸入有效值時,我應該重定向到指定的頁面。

+0

當您將原始$ _POST變量放入SQL字符串中時,您的代碼易受SQL注入攻擊。使用預準備的語句 – Cole

+0

@Cole你能告訴我該做什麼以及該怎麼做? –

+0

當然,看看這個:http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php – Cole

回答

-1

嘗試這樣的查詢:

$query = "select * from admin where first_name = '" . $_POST[user] . "' and password = '" . $_POST[pass] . "'"; 
+0

這並沒有解決有關「mysqli_errno」調用發生錯誤的問題。 –

+0

這個答案仍然存在錯誤...你需要使用引號當調用像'$ _POST [「user」]' – amaster

2

您已經閱讀了mysqli_errno的文檔?

http://www.php.net/manual/en/mysqli.errno.php

當以這種方式調用,則必須提供一個鏈路標識符作爲參數,因此警告和錯誤。

+0

這樣的數組的元素時,我添加了鏈接,現在錯誤被刪除了,但是查詢尚未運行。即使添加了正確的用戶名和密碼,它仍顯示錯誤。 –

+0

@SahibjotSingh如果你修復了這個錯誤,並且仍然有另一個錯誤,你需要編輯你的問題並添加新的錯誤/問題。 – amaster

0

你確定'$ _POST [user]'而不是''。$ _ POST [user]。'「?

+0

這是我得到這個查詢 使用未定義的常量通過 - 假設'通過'在C:\ wamp \ www \ php \ Mobil India \ authentication.php在第21行 –

+1

您需要在調用元素時使用引號類似'$ _POST [「user」]''的數組 – amaster

0

嘗試這樣的事:

$usr=$_POST['user']; 
$psw=$_POST['pass']; 

,然後寫你的查詢是這樣的:

$query="SELECT * FROM ADMIN WHERE first_name= '$usr' AND password='$psw' 

我認爲這將做的工作,有時直接使用POST或GET上查詢字符串值可以讓人瘋狂:)