2017-12-14 12 views
1

컴퓨터 빌드의 게시물을 작성 중입니다. 각 컴퓨터에 할당 된 컴퓨터 구성 요소를 추적하는 완전히 별도의 MYSQL 데이터베이스가 있습니다. BParts.BuildNo = 4 : 예를 들어, BuildID = 4 "아수스 미쳐 VI 익스트림 메인 보드 x299", 코어 i9에 "WP에서 값 가져 오기 짧은 코드와 PHP 변수에 할당

"SELECT BCats.Cat, BParts.ItemName, BParts.ItemSKU, BParts.ItemURL, BParts.ItemPrice, BParts.Qty, BParts.ItemPrice*BParts.Qty AS Price 
FROM BParts 
INNER JOIN BCats ON BCats.CatNo = BParts.ItemCat 
WHERE BParts.BuildNo = 4 AND BParts.SystemNo = 1 
ORDER BY BCats.CatNo ASC" 

내가 수행해야하는 다음 쿼리에서 온 값으로"7980xe 익스트림 LGA 2066이있을 것이다 "BParts.BuildNo = $ buildNo"와 같은 변수로 바꾼 다음, 내 책상 중 하나를 만드는 각 고객에 대해 사진 갤러리를 만들 수 있으며 단문을 삽입하면 [build]가 모든 테이블을 게시합니다. 빌드 번호 4에 속하는 부품 (참조 : https://badvolf.com/en/declassified-systems-build/

용서해주세요.하지만 어떻게해야할지 모르겠다. 나는 어디에서든지 검색했지만, 내가 원하는 것을 찾을 수는 없다. 어떻게 든 끝낼 수 있습니다. 지금까지 AVE, 그리고 당신이 위의 링크를 참조 테이블 생성

그래서
function wp_build_shortcode(){ 
    $query = "SELECT BCats.Cat, BParts.ItemName, BParts.ItemSKU, BParts.ItemURL, BParts.ItemPrice, BParts.Qty, BParts.ItemPrice*BParts.Qty AS Price 
FROM BParts 
INNER JOIN BCats ON BCats.CatNo = BParts.ItemCat 
WHERE BParts.BuildNo = 4 AND BParts.SystemNo = 1 
ORDER BY BCats.CatNo ASC"; 
    ?> 
    <!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Build Name</title> 
     </style> 
    </head> 
<body> 
<table id="example" class="display" cellspacing="0" width="100%"> 
    <col width="15%"> 
    <col width="85%"> 
    <col width="20%"> 

    <thead> 
    <tr> 
     <th></th> 
     <th>Item</th> 
     <th>Qty</th> 
     <th>Total Price</th> 
      </tr> 
    </thead> 
    <tbody> 
    <?php 
    if ($result = mysqli_query($GLOBALS['link'], $query)) { 
     while ($row = $result->fetch_assoc()) { ?> 


      <tr> 
      <td><?php echo $row["Cat"]; ?></td> 
      <td><?php echo $row["ItemName"]; ?></td> 
      <td><?php echo $row["Qty"]; ?></td> 
      <td><?php echo $row["Price"]; ?></td> 
      </tr><?php } 
    } ?> 
    </tbody> 
</table> 

    <?php 
} 
add_shortcode('build', 'wp_build_shortcode'); 
?> 

, 어떻게 내가 할 수 [구축 = "4"] 같은 쿼리에 그 값을 전달? 미리 감사드립니다.

답변

0

적어도 하나의 매개 변수를 제공해야합니다. 예 : wp_build_shortcode($attributes). $attributes은 구문 분석 된 shortcode 매개 변수가있는 배열입니다. 귀하의 경우 ['build' => '4']. Then you can assign it to any local variable: $ buildNo = issest ($ attributes [ 'build'])? intval ($ 속성 [ 'build']) : 0;`. You can find more information here.

매우 짧은 권한을 가진 사용자 (가입자)는 WP 단축 코드에서 액세스 할 수 있습니다. 따라서 매개 변수를 신뢰할 수없는 사용자 입력으로 처리하고 SQL 주입 및 기타 악용으로부터 자신을 보호해야합니다. 귀하의 경우 위 코드의 intval으로 충분해야하지만 준비된 진술이 더 나은 방법입니다.

+0

나는 SQL 주입에 대해 걱정하지 않는다; 연결에 사용 된 데이터베이스 자격 증명 만 두 테이블에 대한 읽기 권한을가집니다. 나는 정보를 보았지만 나는 여전히 뭔가를 놓친다. 솔직히, 나는 배열을 매우 제한적으로 경험하고있다. 그래서 나는 어떻게 데이터를 가져올 지 확신 할 수 없다. –

+0

함수 wp_build_shortcode ($ 속성) { \t $ buildNo = issest ($ 속성 [ '빌드'])? intval ($ attributes [ 'build']) : 0; \t $ 쿼리 = "BParts \t로부터 가격 \t \t \t \t AS BCats.Cat, BParts.ItemName, BParts.ItemSKU, BParts.ItemURL, BParts.ItemPrice, BParts.Qty, BParts.ItemPrice * BParts.Qty을 선택 \t \t \t INNER는 BCats.CatNo = BParts.ItemCat ON BCats 가입 \t \t \t \t WHERE BParts.BuildNo = $ buildNo 및 BParts.SystemNo BCats.CatNo ASC "BY = 1 \t \t \t \t ORDER; ?> add_shortcode ('build', 'wp_build_shortcode'); 나를 위해 작동하지 않습니다. –

+0

'issest'에 오타가 있습니다. 그것은'isset'이어야합니다. 미안합니다. 유일한 실수라고 생각합니다. – jh1711