2017-12-13 7 views
3

다음 코드로 간단한 스위치 기능을 수행하려고합니다.스위치 기능이 원하는 값 대신 기본값 출력

$query = "SELECT * FROM entries where Venue='Condamine' and Year='2018' and 
Event='$5,000 Novice' and herd='2' and scratched IN('n','l') ORDER BY Draw 
ASC"; 
// Execute the query 
$result = mysqli_query($con ,$query); 
if (!$result){ 
    die ("Could not query the database: <br />". mysqli_error()); 
} 
// Change herds 
function getherd($catch) { 
    switch($catch) 
    { 
     case '2': 
      return 'Herd Change'; 
     break; 
     default: 
      return 'Damn!'; 
     break; 
    } 
} 
$catch = $row["herd"]; 
echo "<tr>"; 
echo "<td bgcolor=#FFFFFF><strong> ". getherd($catch) ." </strong></td>"; 
echo "<td bgcolor=#FFFFFF>&nbsp;</td>"; 
echo "</tr>"; 
?> 

결과가 기본값 인 "젠장!"이 출력됩니다. 원하는 값인 "Herd Change"대신에 내가 뭘 잘못하고 있는지. 내가 행 무리의 값 = 2

+0

하십시오'위해서 var_dump ($ 캐치)'전'에코 ""'그 결과에 대해 지금이 오류를 받고 있어요 –

답변

3

가장 아마 타입 캐스팅 문제

$catch = string($row["herd"]);을 시도 할 경우 단어 "무리 변경"을 인쇄 할 확인 $ 캐치는 2

입니다
+0

감사합니다 확인 : 치명적인 오류 : catch되지 않은 오류 (정의되지 않은 함수 STR에 전화)에/home – user2432677

+0

죄송합니다. 형제 님, 편집 된 ans를 사용합니다. 저는 파이썬을 사용하므로 그 구문을 사용했습니다. 그것을 시도하십시오 – Exprator

+0

사용 $ catch = (string) $ row [ "herd"]; 이것이 작동합니다! –

0

변수 $ catch에 정수 값이 들어 있으면 다음 구문을 사용하십시오. 문자열 값의 경우

switch($catch){ 
    case 2: 
    // your code 
    default: 
    // your code 
} 

switch($catch){ 
    case "2": 
    // your code 
    default: 
    // your code 
} 

Switch case manual

은 수동으로 변수를 캐스트 좋은 방법이 아닙니다, 다음을 수행하십시오.

도움이 되었기를 바랍니다.

+0

감사하지만 아무런 차이가 없었습니다 – user2432677

+0

테스트 할 수 있도록 전체 코드를 제공해주십시오. –

1

다음과 같이 코드를 변경해야합니다.

<?php 
$query = "SELECT * FROM entries where Venue='Condamine' and Year='2018' and 
Event='$5,000 Novice' and herd='2' and scratched IN('n','l') ORDER BY Draw 
ASC"; 
// Execute the query 
$result = mysqli_query($con ,$query); 
if (!$result){ 
    die ("Could not query the database: <br />". mysqli_error()); 
} 
// Change herds 
function getherd($catch) { 
    switch($catch) 
    { 
     case '2': 
      return 'Herd Change'; 
     break; 
     default: 
      return 'Damn!'; 
      //Break doesn't require in default case 
    } 
} 

//here you need to get results set from $result. 
$html = ""; 
while ($row = mysqli_fetch_row($result)) { 
    $catch = $row["herd"]; 

    $html += "<tr>"; 
    $html += "<td bgcolor=#FFFFFF><strong> ". getherd($catch) ." </strong></td>"; 
    $html += "<td bgcolor=#FFFFFF>&nbsp;</td>"; 
    $html += "</tr>"; 
} 
echo $html; 
//It will print multiple rows, If query returns multiple rows. 
?> 
+0

당신이 옳다고 생각합니다! "$ row = mysqli_fetch_row ($ result)"이 행이 누락되었습니다 ;-) –

+0

예. 그게 여기에 문제가있어 :) – Thushan

+0

나는 Thushan의 코드를 시험해 보았고 정의되지 않은 오류가 나왔다. 그러나 while ($ row = mysqli_fetch_array ($ result, MYSQLI_ASSOC)) 코드를 추가했습니다. { $ herd = $ row [ "herd"]; 내 현재 스크립트. 실제로 작동하지만 오류 메시지가 나타납니다. 치명적 오류 :/home/sqchacom/public_html /에있는 getherd() (이전에 /home/sqchacom/public_html/nominations/2018_condamine/draws/test.php:144에 선언되었습니다)를 다시 작성할 수 없습니다. nominations/2018_condamine/draws/test.php 라인 144 라인 144는 다음과 같습니다 function getherd ($ herd) { – user2432677