2015-08-15 100 views
0

我試圖從數據庫中提取數據,然後將返回的結果指定給變量以便進行其他搜索/刪除操作,但我一直在一個錯誤消息說我設置的變量($ islecturer和$ group)是未定義的。如果有人能告訴我我要去哪裏,我會非常感激。如何從數據庫中提取數據並將其分配給變量以進行刪除查詢

<?php 

require ('mysqli_connect.php'); 

     $q1 = "SELECT `islecturer` FROM `participants` WHERE `uninum` = 'A17'"; 
     $result1 = @mysqli_query($dbcon,$q1); 


while ($row1 = mysqli_fetch_array ($result1, MYSQLI_ASSOC)){ 
     $islecturer = $row1['islecturer']; 

     echo $islecturer; 

} 


     if ($islecturer == 0){ 

     $q2 = "SELECT `groupid` FROM `groups` WHERE `uninum` = 'A17'"; 
     $result2 = @mysqli_query($dbcon,$q2); 

     } 

while ($row2 = mysqli_fetch_array ($result2, MYSQLI_ASSOC)){ 
     $group = $row2['groupid']; 

     echo $group; 

} 

     $q3 = "DELETE FROM `schedule` WHERE `groupid` = $group LIMIT 1;"; 
      $result3 = mysqli_multi_query ($dbcon , $q3); 
     $q3 .="DELETE FROM `groups` WHERE `groupid` = $group LIMIT 1;"; 
      $result3 = mysqli_multi_query ($dbcon , $q3); 
     $q3 .="DELETE FROM `individualavailability` WHERE uninum = 'A17' LIMIT 1;"; 
      $result3 = mysqli_multi_query ($dbcon , $q3); 
     $q3 .="DELETE FROM `availabilityindex` WHERE `uninum` = 'A17' LIMIT 1;"; 
      $result3 = mysqli_multi_query ($dbcon , $q3); 
     $q3 ="DELETE FROM `participants` WHERE `uninum` = 'A17' LIMIT 1;"; 
      $result3 = mysqli_multi_query ($dbcon , $q3); 


     if (mysqli_affected_rows($dbcon) > 1) { // If it ran OK. 
      echo 'Successfully deleted'; 
     } 

     else if ($islecturer == 1){ 
     echo 'you can\'t delete a lecturer without adding a replacement group member'; 
     } 
     else{ 
      echo 'query failed'; 
     } 


mysqli_close($dbcon); 

?> 
+0

需要注意的是'A17'現在是硬編碼的,但是它會從$ _POST ['uni_id']獲得。 – Rodger123

回答

1

$islecturer$group變量在另一個範圍定義,即在它們的while循環的範圍。在while循環之外,您無法再訪問它們。

while ($row1 = mysqli_fetch_array ($result1, MYSQLI_ASSOC)){ 
     $islecturer = $row1['islecturer']; 
     echo $islecturer; 
} 
// Out of scope, $islecturer is not accessible anymore 

編輯:要解決這個問題,你可以定義循環前的變量。

$islecturer = 0; 
while ($row1 = mysqli_fetch_array ($result1, MYSQLI_ASSOC)){ 
     $islecturer = $row1['islecturer']; 
     echo $islecturer; 
} 

if ($islecturer == 0){ 
    ... 
} 

注意,一點點的研究,你會發現this鏈接,是幾乎完全一樣的問題,因爲你面對的。

+0

非常感謝HyperZ!請問您是否知道解決此問題的好方法?我一直試圖將數據庫列名/值作爲參數傳遞給函數,該參數執行sqli查詢並返回我認爲可以分配給變量的結果,但收效甚微! – Rodger123

相關問題