2015-03-19 38 views
0

我想在我的用戶表上用sqli在php中執行選擇查詢。 出於安全原因(SQL注入),我想要使用參數來做到這一點。 另外我想將結果存儲在一個php變量中。如何獲得選擇查詢工作sqli

這是我的代碼:

$conn變量填寫正確。

$login = $_POST['username']; 

//Check if username is available 
/*Line44*/ $stmt = $conn->prepare("SELECT login FROM users WHERE login = ?"); 
/*Line45*/ $stmt->bind_param('s', $login); 
      $result = $stmt->execute(); 

if ($result->num_rows > 0) 
{ 
    echo "This username is in use."; 
} 
else 
{  
    //Add account to database 
    $stmt = $conn->prepare("INSERT INTO users (login, password, email, gender) VALUES (?, ?, ?, ?)"); 
    $stmt->bind_param('ssss', $login, $md5pass, $email, $gender); 
    $stmt->execute(); 
    $stmt->close(); 
    echo "<font color=\"#254117;\">Your account is succesfully geregistered! <br />U can now login!</font>"; 
} 

我得到這個錯誤:

Warning: mysqli::prepare() [mysqli.prepare]: Couldn't fetch mysqli in C:\xampp\htdocs\cammerta\registreer.php on line 44

Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\cammerta\registreer.php on line 45

我希望有人能提供一個解決方案,向我解釋,我做錯了什麼。 在此先感謝!在phpMyAdmin或任何程序

2.Maybe您沒有設置變量

回答

0
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); 
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
$stmt->bind_param('sssd', $code, $language, $official, $percent); 
$stmt->execute(); 

1,請運行查詢。 $ login,$ md5pass,$ email,$ gender

+0

謝謝4你的anwser。我從你的例子中找到了來自同一網站的代碼。所有已經正確設置我的變量。我想將結果存儲在一個變量中,以便檢查它是否在行中。 – NickGames 2015-03-19 12:30:44

+0

您的第一個查詢運行成功嗎? – 2015-03-19 12:31:45

+0

對不起,我把行號放在錯誤的行之前。現在修復它。 – NickGames 2015-03-19 12:37:03

0

$ stmt = $ conn-> prepare語句可能返回false.Please使用給定的代碼來獲取查詢中的錯誤。

if ($stmt = $conn->prepare('your query')) { 
    $stmt->bind_param(...); 

} 
else { 
    printf("Error=: %s\n", $conn->error); 
}