2013-06-08 5 views
0

나는 사용자 정의 데이터베이스를 만드는 방법에 대해 YouTube video을 보았습니다. 나는 이것을 내 사이트에 구현하려고 시도했다. 그러나 분명히 작동하지 않습니다 ...MySQL 쿼리가 데이터를 가져 오지 못했습니다 ... 또는 그와 비슷한 것

다음 코드에서 'Query failed :'오류가 발생합니다.

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect to database"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
$con=mysqli_connect("$host","$username","$password","$db_name"); 

$terms = explode(" ", $search); 
$query = "SELECT * FROM search WHERE "; 

foreach ($terms as $each){ 
$i++; 
if ($i == 1) 
    $query .= "keywords LIKE '%each%' "; 
else 
    $query .= "OR keywords LIKE '%each%' "; 
} 

$query = mysql_query($query); 
$numrows = mysql_num_rows($query) or die('Query failed: ' . mysql_error() . "<br />\n$sql"); 

if ($numrows > 0) 
    while($row = mysqlfetch_ASSOC($query)){ 
    $id = $row['id']; 
    $title = $row['title']; 
    $description= $row['description']; 
    $keywords = $row['keywords']; 
    $link = $row['link']; 

    echo '<h2><a href="$link">$title</a><h2> 
    $description<br/><br/>'; 
    } 
else 

    echo "No results found"; 

    //disconnect 
    mysql_close(); 

?> 

솔직히 말해서, 나는 그 중 70 % 만 이해하고 잘 모른다. 데이터베이스가 제대로 연결되어 있고 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까???

mysql_num_rows는 WHERE '와 닫는 인용 부호 사이에 공백을 넣으면서 문제를 일으키기 때문에 여기에 나를 남겨 두었습니다.

$query .= "keywords LIKE '%{$each}%' "; 

그것은으로 텍스트로 각 치료되지 않고 :

$query .= "keywords LIKE '%each%' "; 

대신이 일이 안

+0

어떻게 될까요? 당신이 어디로 이동하면 '키워드 같은'의 infront .... .... 않습니다 요 ur 쿼리가 모든 것을 반환합니까? – KyleK

+0

'$ query = mysql_query ($ query) 또는 die ('Query failed :'. mysql_error(). "
\ n $ sql"쿼리에'또는 죽이기 (... mysql_error()); 여기서 필요한 오류 메시지를 얻을 수 있습니다. '$ search'는 어디에서 선언하고 있습니까? – Sean

+0

그래서 $ search를 $ my search로 바꿨습니다. $ mysearch는 전역 파일에서 선언되며 검색 상자에서 입력을받습니다. 나는 어딘가에 데이터베이스에 키워드를 입력 할 때 '$ title'과 '$ description'을 일반 텍스트가 아닌 변수 카운터 파트로 제공합니다. –

답변

0

이 우선 .... 당신이 ... 변수를 포함하도록 $ 각을 포함해야합니다 (같은 아래 두 줄을 간다)뿐만 아니라 각 ... 또한

$query .= "WHERE keywords LIKE '%{$each}%' "; 

. ... 사용자가 검색에 아무 것도 입력하지 않으면 ... 아무 것도 입력하지 않으면 아무것도 입력하지 않으면 아무 것도 입력하지 않으면 키워드가 숨겨진 위치로 이동합니다.

$terms = explode(" ", $search); 
$query = "SELECT * FROM search "; 

    if(!empty($terms)){ 

    foreach ($terms as $each){ 
    $i++; 
    if ($i == 1) 
     $query .= "WHERE keywords LIKE '%{$each}%' "; 
     else 
     $query .= "OR keywords LIKE '%{$each}%' "; 
     } 
    } 
+0

지금 '치명적 오류 : 정의되지 않은 함수 mysqlfetch_assoc()'호출 –

+0

방금 ​​'mysql_fetch_assoc'밑줄을 잊어 버렸습니다. –

+0

변수에 문제가 있습니다 ... 변수를 텍스트 '$ title'과 '$ description'로 표시하는 것일뿐입니다. –

1

나는,이 방법으로 문제가 있는지 모르겠지만, 루프의 문자열.