2016-05-08 3 views
0

Я пытаюсь выполнить эхо-данные из базы данных, однако я получаю следующие ошибки, хотя все 3 переменные были.неопределенная переменная, но переменная определена/объявлена ​​

Примечание: Undefined переменной: fran_phone в /Applications/MAMP/htdocs/PhpProject2/testing.php на линии 58

Для следующих:

  • Fran_phone
  • Twit
  • Fb

Код

mysqli_report(MYSQLI_REPORT_INDEX); 
$dbc = new mysqli("localhost", "root", "root", "One_Delivery"); 
$dbc->set_charset("utf8mb4"); 
if (isset($_GET['area'])) { 

    $franc_details = $_GET['area']; 
    $get_franc_dets = "SELECT * FROM Franc_dets WHERE Fran_City = '$franc_details'"; 
    $run_get_franc_dets = mysqli_query($dbc, $get_franc_dets); 
    mysqli_stmt_execute($run_get_franc_dets); 


    while ($row_get_franc_dets = mysqli_fetch_array($run_get_franc_dets)) { 

     $franc_phone = $row_get_franc_dets['Fran_Contact_Num']; 
     $twit = $row_get_franc_dets['Twitter']; 
     $fb = $row_get_franc_dets['Fb']; 
    } 
} 
?> 

<div id='franc_div' > 

    <table id='franchise_dets'> 

     <tr id='frnc_tbl'> 
      <td class='collapse'> 
       <img src='./Images/franc_dets_phone.png' height='50' width='50' alt='Call us'>  
      </td> 

      <td class='phn_dets'> 
       <p id='phn_title'>Problems ordering?</p> 
       <p id='phn_numb'><?php echo $franc_phone ?></p> 
      </td> 

      <td class='collapse'> 
       <img src='./Images/franc_dets_twitter.png' height='50' width='50' alt='Twitter logo'>  
      </td> 


      <td class='twitter_dets'> 
       <p id='sm_title'>Social media</p> 
       <a id='sm_twit' href='https://twitter.com/<?php echo $twit ?>'>@<?php echo $twit ?></a> 
      </td> 

      <td class='collapse'> 
       <img src='./Images/franc_dets_fb.png' height='50' width='50' alt='Facebook logo' >  
      </td> 


      <td class='fb_dets'> 

       <a id='sm_fb' href='https://www.facebook.com/<?php echo $fb; ?>'><?php echo $fb; ?></a> 
      </td> 
     </tr> 

    </table> 
</div> 

где же я ошибся? что я могу сделать, чтобы разрешить это

+0

Я не вижу в вашем коде 'fran_phone'. Я вижу '$ franc_phone', но' fran'! = 'Franc' – Sean

+0

@ Извините, что вы меня потеряли. yes $ franc_phone – Monroe

+1

Вы только объявляете эти переменные 'if (isset ($ _ GET ['area'])) {' поэтому в первый раз на странице, когда пользователь еще ничего не добавил, они, конечно же, будут НЕ УТОЧНЕНЫ – RiggsFolly

ответ

1

Итак, есть 2 вещи не так.

Вы явно пытаетесь учиться/переключаться на подготовленные заявления. mysqli_stmt_execute требует справка, но вы даете ей объект mysqli_result.

Вместо использования mysqli_query вам необходимо использовать mysqli_prepare.

$sql = "SELECT * FROM Franc_dets WHERE Fran_City = ?;"; 
if ($stmt = mysqli_prepare($dbc, $sql)) { 
    mysqli_stmt_bind_param($stmt, "s", $franc_details); 
    mysqli_stmt_execute($stmt); 

    // Check how many if any rows were returned. 
    $num_rows = mysqli_stmt_num_rows($stmt); 

    // Do what you were already doing, 
    // and loop through each returned row. 
} 

Обратите внимание, что если 0 строк возвращено, вы получите ту же ошибку (и). Как тогда переменные не будут определены.

Смежные вопросы