2015-01-13 51 views
0

我在這個網站上瀏覽過很多不同的代碼。找出我的代碼有什麼問題。基本上我只想在表格中搜索並測試結果。我寫的是這樣的:MySQL select沒有選擇

<?php 

ob_start(); 
session_start(); 

$conn = new mysqli('localhost','username','password','mytable'); 

if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$valuetotest = 'something'; 
$result = mysql_query("SELECT id FROM members WHERE UserName = $valuetotest"); 

if(mysql_num_rows($result) == 0) 
{ 
    echo "User not found"; 
} 

$password = 'something2'; 
$userData = mysql_fetch_array($result, MYSQL_ASSOC); 

if($password != $userData['Password']) 
{ 
echo "Password not found"; 
}else{ // Redirect to home page after successful login. 
      header('Location: welcome.php'); 
} 
?> 

我總是得到消息:

"User not found." and "password not found." 

當我知道用戶名和密碼都在表...

無我」 m對PHP/MySQL非常熟悉,所以在我面前可能會有一些相當大的東西,我看不到它!

有人可以幫忙。感謝名單。

回答

1

發現不到一秒鐘。 (如果您有關於它的錯誤報告將採取比甚至更少)

1)你的連接是mysqli,您的查詢電話是mysql

$result = mysql_query("SELECT id FROM members WHERE UserName = $valuetotest"); 

2)的$valuetotest值是一個字符串值並且需要位於查詢中的引號內。應該像

SELECT id FROM members WHERE UserName = 'hellohi' 

,而不是像

SELECT id FROM members WHERE UserName = hellohi 

哦,How can I prevent SQL injection in PHP?

+0

好了mysqli的......但我想$ valuetotest是一個變量不是一個常量...... – NorKayak

+0

是即使如此,你必須使用'用戶名='$ valueetotest'',但是抱歉,我不會在我的答案中提出一些建議,以後可能會對代碼造成傷害。請繼續準備好的聲明並查看我添加到我的答案中的鏈接。 –

+0

好的,現在好了... – NorKayak

-1

您選擇文本,所以你應該在你的SELECT語句使用 '' 符號。 像這樣:

$valuetotest = 'something'; 
$result = mysql_query("SELECT id FROM members WHERE UserName = '$valuetotest'"); 
0
<?php 

$result = mysqli_query("SELECT `id`, `Password` FROM `members` WHERE `UserName` = '$valuetotest'"); 

if(mysqli_num_rows($result) == 0) 
{ 
    echo "User not found"; 
} 

$password = 'something2'; 
$userData = mysqli_fetch_array($result, MYSQL_ASSOC); 

if($password != $userData['Password']) 
{ 
echo "Password not found"; 
}else{ // Redirect to home page after successful login. 
      header('Location: welcome.php'); 
} 

?> 
-2
$result = mysql_query("SELECT id FROM members WHERE UserName = '".$valuetotest."'");