2015-03-19 19 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); 
}