2017-04-03 2 views
0

이고, 현재로서는 약간의 두통이 있습니다. 이전 페이지에서 링크를 클릭 한 후 일부 데이터를 검색하는 데이터베이스를 쿼리하고 있습니다.에코를 사용하지 않고 데이터베이스를 쿼리하면 디자인 결과가

'에코'에서 일부 코드로 재생하기가 쉽습니다. 문제는 'echo'에 있습니다. PHP와 include/html/design 코드를 디자인에 넣어야합니다. 거기에 방법을 코드를 작성할 수 있지만 나중에 다시 변수를 호출하고 포함하는 등의 다른 PHP 코드를 배치 할 수있는 방법이 있나요? 기본적으로 내가 코드를 가지고 있어야하지만 내 페이지의 디자인 측면에 집중할 수 있도록 해줄 수있는 무언가가있다.

도움을 주시면 감사하겠습니다.

<?php 
if(!empty($_GET['book_url'])) 
{ 
    $sql = " 
SELECT articles.id, articles.order_ref, articles.art_title, articles.art_book, articles.art_url, book.id AS bookid, book.book_name AS book_name, book.book_url AS book_url 
FROM articles 
LEFT JOIN book ON articles.art_book = book.id 
WHERE book_name = \"" .$_GET['book_url'] . "\" 
ORDER BY id ASC 
"; 
    // then do the query, etc.... 
} 

$results = $db->query($sql); 

if($results->num_rows) { 
    While($row = $results->fetch_object()) { 
     echo " 

     ////////Show Stuff 

     "; 
     ?> 
+0

경고 ** ** 쿼리에는'$ _GET' 데이터가 사용되기 때문에 심각한 [SQL injection 버그] (http://bobby-tables.com/)가 있습니다. 가능하면 ** prepared statements **를 사용하십시오. 이것들은 [mysqli] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)와 [PDO] (http://php.net/manual/)에서 매우 간단합니다. en/pdo.prepared-statements.php) 어디에서 사용자가 제공 한 데이터는 나중에 사용되는 것에 따라'bind_param' 또는'execute'를 사용하여 채워지는'?'또는': name' 지시자로 지정됩니다. **'$ _POST' 또는'$ _GET' 데이터를 쿼리에 직접 입력하지 마십시오. – tadman

+0

[Twig] (http://twig.sensiolabs.org/)와 같은 템플릿 엔진을 사용하여이 분리를 멋지게 처리하는 것이 좋습니다. – Augwa

답변

0

<?php ?>에 코드를 삽입하여 코드와 HTML을 구분할 수 있습니다. 그런 다음 HTML에서 코드 섹션에서 수행 한 작업을 인쇄하는 짧은 코드 조각을 가질 수 있습니다. 이 같은 (구문 오류 또는 두 가지가있을 수 있습니다, 나는 아파치 테스트 할 필요가 없습니다) :

<?php 

$name = $_GET['name']; 

function stuff() { 
    // this would normally be long and complicated 
    return "stuff"; 
} 

?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="viewport" content="width=device-width,initial-scale=1"> 
    <title>title</title> 
    <link rel="stylesheet" href="stylesheet.css" type="text/css"> 
    </head> 
    <body> 
    <!-- try to keep these short so you can focus on design--> 
    <h1>The name is: <?php echo $name; ?></h1> 
    <h1>The stuff is: <?php echo stuff(); ?></h1> 
    </body> 
</html> 

또는, 당신은 템플릿 시스템을 제공 할 것입니다 Laravel 같은 프레임 워크를 사용할 수 있습니다.

+0

Bens 방법으로 앞으로 나아갈 길. 그 방법으로 내 코드가 어떻게 작동하는지 확신 할 수 없습니다. – shimmy

+0

@shimmy 대신 테이블이나 다른 것을 직접 echo하는 것이 아니라 변수에 저장하십시오 (변수가 html 문자열이라 할지라도). 그런 다음이 방법을 사용할 수 있습니다. @ tadman의 경고를 반복하고 싶습니다. 사용자가 데이터베이스를 지우려면 사용자가 쉽게 지울 수 있습니다. ** 방금 방문한 URL을 조작하면 데이터베이스를 지울 수 있습니다. PDO를 사용하십시오. 시작하기 쉽고 상대적으로 안전합니다. – Ben

관련 문제