2012-05-22 4 views
0

사용자가 이전 페이지에서 해당 책 이름을 클릭하면 관계 테이블에서 관련 데이터를 검색하려고합니다. 데이터베이스에 데이터가 있더라도 페이지에 아무 것도 인쇄되지 않습니다.PHP에서 데이터베이스의 데이터 검색

테이블 스키마는 다음과 같습니다

관계 ID, bookone, booktwo, 관계, relationlike,

<html> 
    <head> 
    <title>Retrieve Relationships</title> 
    </head> 
    <body> 

    <dl> 

    <?php 
    // Connect to database server 
    mysql_connect("latcs7.cs.latrobe.edu.au","12ice06","EsnYkuxuwh9RbtQuRcQt") or die (mysql_error()); 

    // Select database 
    mysql_select_db("12ice06") or die(mysql_error()); 
     $sTitle=0; 
    // Get data from the database depending on the value of the id in the URL 
    $title = (isset($_GET['title']) && is_string($_GET['title'])) ? $_GET['title'] : null; 
$sTitle = mysql_real_escape_string($title); 
$strSQL = "SELECT R.bookone, B.title, B.author, 
     R.booktwo, B.title, B.author, 
     R.relation, R.relationlike, R.relationdislike 
     FROM relationships R 
     INNER JOIN books B ON R.bookone = B.bookid";  

$rs = mysql_query($strSQL) or die(mysql_error()); 
    // Loop the recordset $rs 

while($row = mysql_fetch_array($rs)){ 
    // Write the data of the book 


    echo "<dt>Book One:</dt><dd>" . $row["bookone"] . "</dd>"; 
    echo "<dt>Title:</dt><dd>" . $row["title"] . "</dd>"; 
    echo "<dt>Author:</dt><dd>" . $row["author"] . "</dd>"; 
    echo "<dt>Book Two:</dt><dd>" . $row["booktwo"] . "</dd>"; 
     echo "<dt>Title:</dt><dd>" . $row["title"] . "</dd>"; 
    echo "<dt>Author:</dt><dd>" . $row["author"] . "</dd>"; 
    echo "<dt>Relationship:</dt><dd>" . $row["relation"] . "</dd>"; 
    echo "<dt>Likes:</dt><dd>" . $row["relationshiplikes"] . "</dd>"; 
    echo "<dt>Dislikes:</dt><dd>" . $row["relationshipdislikes"] . "</dd>"; 
} 

echo $strSQL; 
    // Close the database connection 
    mysql_close(); 
    ?> 

    </dl> 
    <p><a href="search_bookl.php">Return to the list</a></p> 

    </body> 

    </html> 
+1

고대의 mysql_ * 함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 준비된 구문을 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)를 사용해야합니다. 만약 당신이 배울 점이 있다면, 여기 [PDO 관련 튜토리얼] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). – DCoder

+0

불행히도 우리가이 임무를 위해 사용하라고 말한 언어. – user1393064

+0

mysql에서이 쿼리를 직접 사용해 보셨습니까? 어떤 행을 반환합니까? –

답변

2
if($row = mysql_fetch_array($rs)){ 

    // Write the data of the book 
    echo "<dt>Book One:</dt><dd>" . $row["bookone"] . "</dd>"; 
    echo "<dt>Book Two:</dt><dd>" . $row["booktwo"] . "</dd>"; 
    echo "<dt>Relationship:</dt><dd>" . $row["relation"] . "</dd>"; 
    echo "<dt>Likes:</dt><dd>" . $row["relationshiplikes"] . "</dd>"; 
    echo "<dt>Dislikes:</dt><dd>" . $row["relationshipdislikes"] . "</dd>"; 
}while($row!=0); 

relationdislike이어야한다

while($row = mysql_fetch_array($rs)){ 
    // Write the data of the book 
    echo "<dt>Book One:</dt><dd>" . $row["bookone"] . "</dd>"; 
    echo "<dt>Book Two:</dt><dd>" . $row["booktwo"] . "</dd>"; 
    echo "<dt>Relationship:</dt><dd>" . $row["relation"] . "</dd>"; 
    echo "<dt>Likes:</dt><dd>" . $row["relationshiplikes"] . "</dd>"; 
    echo "<dt>Dislikes:</dt><dd>" . $row["relationshipdislikes"] . "</dd>"; 
} 
+0

화면에 아무것도 인쇄되지 않았습니다. – user1393064

+0

sql을 확인하십시오. 정말로'books.bookid = relationships.bookone AND relationships.bookone = '{$ s 제목}' '? 'books.book_id'와'$ sTitle'? 그들은 같은가요? – xdazz

+0

아니요, bookone은 서적 테이블의 외래 키이며 서적 테이블의 제목을 참조합니다. 다른 책과의 관계로 책 제목과 저자를 인쇄하려고합니다. – user1393064

0

내 조언 :

a) 다시하십시오.

$strSQL = "SELECT [...] 
      WHERE books.bookid=relationships.bookone 
       AND relationships.bookone='".$sTitle."'"; 

B)를 확인하여 변수 $sTitle가 비어 있지 않은지 확인 :이처럼 SQL 문에서 변수를 형성한다. 그래도 문제가 지속되면 추가 디버깅을 위해 전체 SQL 문 (echo $strSQL;)을 반향하십시오.

c) 전체 SQL 문을 수정하십시오. , 대신

while ($row = mysql_fetch_array($rs)) { 
    // Write the data of the book 
    // Insert your echos here 
} 

전자) 질문 같은 것을 잠시 문을 사용하는 대신 if($row = mysql_fetch_array($rs)){ 후 데이터를 출력의)

$strSQL = "SELECT R.bookone, R.booktwo, 
       R.relation, 
       R.relationlike, R.relationdislike 
      FROM relationships R 
      INNER JOIN books B ON R.bookone = B.bookid 
      WHERE R.bookone='".$sTitle."'"; 

D : 다음 명령문은 동일하지 않습니다 훨씬 더 읽을 수 거기에 구체적인 이유는 테이블 도서 INNER JOIN 에드지만, 조건에서 사용되지 않습니까?

+0

이것은 디버거가 출력 한 것입니다 SELECT R.bookone, R.booktwo, R.relation, R.relationlike, R.relationdislike FROM 관계 R INNER JOIN 책 B ON R.bookone = B.bookid WHERE R.bookone = '' – user1393064

+0

변수'$ sTitle'은 비어 있습니다. '$ _GET [ 'title']'이 실제로 설정되어 사용 가능한지 확인하십시오. – Bjoern

관련 문제