2015-10-28 55 views
1

我寫了這個函數獲取用戶名並需要檢查用戶是否已經在數據庫中。C9 - 如何獲取查詢的結果以及如何獲取查詢中的行數?

這是我的代碼:

$conn = new mysqli($servername, $username, $password, $database, $dbport); 
mysql_select_db("myDB",$conn); 
//$sql="CALL checkIfExsist(".$name.")"; 
$sql = "select * from Users where userName='".$name."' LIMIT 1;"; 
$myData = $conn-> query($sql); 
$rowc = mysqli_num_rows($myData); 
printf("Result set has %d rows.\n", $rowc); 
    if($rowc > 0) 
    { 
     echo "User ".$name." checked"; 

    } 
    else 
    echo "not exsist"; 

當我運行在終端這個查詢,我得到1個的結果,但在康壽我得到:「結果集有0行。」

什麼問題?

+0

請仔細閱讀嘗試[如何防止PHP SQL注入(http://stackoverflow.com/questions/60174/how-can -i-prevent-sql -injection-in-php) – skrilled

+0

這個問題如何與我的問題相關? – galkogi

+0

似乎有一個mysql_函數會出現在mysqli_函數中 – Strawberry

回答

0

您應該使用mysqli_而不是mysql_由於mysql_已被棄用。

首先,我看到一個問題:(你混合mysql_和mysqli_

你連接MySQL的:

mysql_select_db("myDB",$conn); 

更改爲:

$conn=mysqli_connect("localhost","my_user","my_password","my_db"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

你應該a LSO使用預處理語句:

$stmt = $mysqli->prepare('SELECT * FROM Users WHERE userName = ?') 
$stmt->bind_param('s', $username); 
if(!$stmt->execute()){ 
trigger_error("there was an error....".$mysqli->error, E_USER_WARNING); 
} 
$stmt->store_result(); 

那麼當然你的if語句:

 if ($stmt->num_rows > 0){ 
     echo "User ".$name." checked"; 
    }else 
     echo"User doesn't exist" 
+0

我嘗試了但它會拋出錯誤:「500(內部服務器錯誤)」 – galkogi

+0

@galkogi我編輯了'mysqli_select_db($ conn,「myDB」); –

+0

它仍然無法正常工作... – galkogi

0

我認爲你需要改變你的連接代碼。請看看,並通過這種方式

<?php 

define("DB_HOST", "db_host"); 
define("DB_USER", "db_user"); 
define("DB_PASSWORD", "db_pass"); 
define("DB_DATABASE", "db_name"); 
$conn= mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_DATABASE); 

$sql = "select * from Users where userName='".$name."' LIMIT 1;"; 
$myData = $conn->query($sql); 
$rowc = mysqli_num_rows($myData); 
printf("Result set has %d rows.\n", $rowc); 
    if($rowc > 0) 
    { 
     echo "User ".$name." checked"; 

    } 
    else 
    echo "not exsist"; 
0

,您是否試圖$rowc = $myData->num_rows;

+0

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – IKavanagh

+0

@IKavanagh感謝您的建議,但我當時無法發表評論(由於名聲較低)。 – Karan