2015-06-26 28 views
-1

美好的一天,SQLSRV和param計數錯誤

別的之前,我可以成功連接到我的數據庫,我可以 打印出來,從我的表中的所有數據..

這是我的問題,我我遇到一個警告和致命錯誤當我嘗試這樣做:

$sql = sqlsrv_query("SELECT [name] FROM [Test].[dbo].[TestTable] WHERE [name] = '$user', $conn); 
$rows = sqlsrv_num_rows($conn,$sql); 

這是我得到的錯誤,

sqlsrv_query()預計參數1是資源....帕拉姆計數和 參數數量不匹配

回答

0

停止串聯參數,這不是安全的。瞭解有關sql injection。由於您的用戶名參數包含? char,可能會引發錯誤。

此外,右sqlsrv_query syntax是:

混合sqlsrv_query(資源$康恩,字符串$ SQL [,數組$ PARAMS [,數組$選項]])

其中SQL是第二個參數,而不是第一個。你的代碼應該是這樣的:

$sql = "SELECT [name] FROM [Test].[dbo].[TestTable] WHERE [name] = ?"; 
$params = array(1, $user); 

$stmt = sqlsrv_query($conn, $sql, $params); 
if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 
+0

感謝評論,btw,$ user = $ _POST ['Name'],我想要做的是,如果名稱是正確的,它將匹配它到數據庫,以便用戶可以登錄。 是的,我會盡快完成這個簡單的工作。 :) – Stvn

+0

我希望這個答案解決你的問題。問候。 – danihp

+0

嗯,我現在有登錄錯誤,我猜它現在正在工作(不確定) 只是要添加, 如果($ stmt == 1){ header(「Location:Profile.php」; } else { 插入的憑證無效。} – Stvn