如何从数据库中提取数据并将其分配给变量以进行删除查询
问题描述:
我试图从数据库中提取数据,然后将返回的结果指定给变量以便进行其他搜索/删除操作,但我一直在一个错误消息说我设置的变量($ 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);
?>
答
的$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
需要注意的是'A17'现在是硬编码的,但是它会从$ _POST ['uni_id']获得。 – Rodger123