2014-05-05 19 views
1

我很抱歉如果我的問題有一個簡單的答案,但我是新來的,並且有點卡住... 所以我應該做一個烹飪食譜一個項目的網站,我使用的PHP 5.5.9和SQL Server 2012.我跟着一個視頻教程創建一個搜索框應該列出結果,從數據庫中檢索。這裏是我的代碼:PHP連接到Sql服務器,但查詢不起作用

<?php 
include ("dbconnect.php"); 

if (!isset($_POST['search'])) { 
    header("Location:index.php"); 
} 
$search_sql="SELECT * FROM Recipe WHERE name LIKE '%".$_POST['search']."%' OR description LIKE '%".$_POST['search']."%'"; 
$search_query=sqlsrv_query($conn, $search_sql); 
if (sqlsrv_num_rows($search_query)!=0) { 
    $search_rs=sqlsrv_fetch_assoc($search_query); } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
</head> 
<body> 
<h3>Search results</h3> 
<?php 
if (sqlsrv_num_rows($search_query)!=0) { 
    do { ?> 
     <p><?php echo $search_rs['name']; ?></p> 
    <?php } 
    while ($search_rs=sqlsrv_fetch_assoc($search_query)); 
} 
else { 
    echo "No results found"; 
} 
?> 
</body> 
</html> 

這裏是我的dbconnect.php:

<?php 
$serverName = "USER\SQLEXPRESS"; //serverName\instanceName 

// Since UID and PWD are not specified in the $connectionInfo array, 
// The connection will be attempted using Windows Authentication. 
$connectionInfo = array("Database"=>"iCook project"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 

if($conn) { 
    echo "Connection established.<br />"; 
}else{ 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 
?> 

安裝的PHP 5.5和SQL服務器驅動程序後,數據庫也只需設法connect..However,查詢不起作用,即使我硬編碼值。我不再有錯誤,但一直「沒有找到結果」......可能值得一提的是,我遵循的教程是使用MySQL,因此我在代碼中將mysql更改爲sqlsrv。此外,查詢並直接在SQL服務器執行...

我將不勝感激任何幫助......

編輯: OK仍然沒有運氣,但我注意到的東西 - PhpStorm說:「未定義功能sqlsrv_fetch_assoc 。在內置庫和項目文件中找不到引用函數聲明。「我嘗試了谷歌搜索這個,但沒有出現..你怎麼做到這一點? 另外,我使用的教程是this one ...

+0

你需要編寫名稱像「%」。$ somevariable。「%」NOT name = –

+0

是的,我的錯誤,但沒有什麼變化不幸的.. –

回答

1

變化

$search_sql="SELECT * FROM Recipe WHERE name ='%".$_POST['search']."%' OR description ='%".$_POST['search']."%'"; 

$search_sql="SELECT * FROM Recipe WHERE name LIKE '%".$_POST['search']."%' OR description LIKE '%".$_POST['search']."%'"; 

讓我知道如何去。

+0

最初的代碼是LIKE,並沒有返回結果,我只是試着=忘了刪除它.. –

+0

在文檔的頂部,你可以添加error_reporting(E_ALL)。一個錯誤可能會被拋出 – Ian

+0

我把它放在第一個<?php標籤內,但執行後沒有什麼不同。 –

0

這是我如何構造我的db_connect.phpSQL Server也許問題是在連接?

<?php 
$server = "localhost"; // aka "localhost" or "192.168.10.110" 
$username = "user"; // aka "ChuckNorris" 
$password = "password"; // aka "cankickyourass" 
$database = "TestDB1"; // database you want to connect to 

$connectionOptions = array("Database" => $database, "UID" => $username, "PWD" => $password); 

/* Connect using Windows Authentication. */ 
$conn = sqlsrv_connect($server, $connectionOptions); 

if($conn) { 
    // Connection Established! 
} else { 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 
?> 

,這是我如何做一個SQL服務器查詢

$sql = "SELECT * 
     FROM Users 
     WHERE UserName LIKE '%user%'"; 

// Execute query: 
$result = sqlsrv_query($conn, $sql) or die('A error occured: ' . sqlsrv_errors()); 

if(!$result) 
{ 
    echo 'There are no users. ' . sqlsrv_errors(); 
} 
else 
{ 
    while($row = sqlsrv_fetch_array($result)) 
    { 
     //use $row['column'] here 
    } 
} 
+0

我無法像你這樣連接:(可能是因爲我沒有密碼,我不知道... –

0

只要改變 「」,如下圖,它會工作

while($search_rs = sqlsrv_fetch_array($search_query, SQLSRV_FETCH_ASSOC)); 

你也可以請點擊鏈接http://www.php.net/manual/en/function.sqlsrv-fetch-array.php它會幫助你很多...

+0

謝謝,我會檢查它,但「while」不能像那樣工作 - 沒有錯誤,但又沒有找到結果..我注意到phpStorm說SQLSRV_FETCH_ASSOC是一個未定義的常量,雖然...:/ –

0

我切換到MySQL並且查詢現在可以工作。感謝所有試圖幫助的人!