2015-08-15 85 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

相关问题