mysql — PHP делает бесконечный запрос

Я хочу сделать это, я хочу выбрать файл с моего сервера и удалить его с сервера и базы данных. Это тоже так, но когда он удаляется, он начинает делать это бесконечное количество раз. Так что есть бесконечный цикл, и я не понимаю, почему.

Вот мой delete.php, где я выбираю файл для удаления:

<html>
<body>
<title>Delete your uploads</title>

<?php
session_start();
$username =$_SESSION["uname"];
?>
<form action="deleted.php" method="post">

<?php
$con = mysqli_connect("localhost", "root", "", "webpage");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql= mysqli_query($con, "SELECT imagesnotes FROM datas where username='$username'");
echo "File or Image";

echo'<select name="imagesnotes">';
echo'<option value="" selected="selected">Select a File</option>';

while($row = mysqli_fetch_array($sql))

{
echo'<option value="' . $row['imagesnotes'] . '">'. $row['imagesnotes'] .'</option>';
}
echo'</select></p><p>';

mysqli_close($con);
?>
<td width="80"><input name="download" type="submit" class="box" id="download" value=" download "></td>
</form>
</body>
</html>

И вот мой удаленный файл .php, который подтверждает это:

<?php
session_start();
$username =$_SESSION["uname"];
?>
<?php
$con = mysqli_connect("localhost", "root", "", "webpage");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$imagesnotes = $_POST['imagesnotes'];
$target_dir = "uploads/";
$target_file = $target_dir . basename($imagesnotes);
$sql = mysqli_query($con,"delete from datas where username='$username' and  imagesnotes='$imagesnotes'");

while($sql)
{
$delete = unlink($target_file);
if($delete)
{
echo '<br>you deleted your file from our server</br>';
}
else
{
echo 'An error occured';
}
$sql2 = mysqli_query($con,"delete from userdata where username='$username' and imagesnotes='$imagesnotes'");
if(!$sql2)
{
echo "<br>we couldn't delete some of your data from the database please contact administrators.</br>";
}
echo "<br> We deleted your files from server and database. <br>";
}
if(!$sql)
{
echo "<br>There is a problem with connection or our MySQL code, Please contact administrators.</br>";
}
mysqli_close($con);
?>

Все кажется правдой. Не могли бы вы мне помочь?

1

Решение

Funcion mysqli_query всегда возвращает TRUE при успешном выполнении запроса на удаление. Это причина бесконечного цикла.

Вам не нужны результаты цикла, если у вас одно имя файла ($ _POST [‘imagesnotes’]).

...
$sql = mysqli_query($con,"delete from datas where username='$username' and  imagesnotes='$imagesnotes'"); // $sql = TRUE on success
$delete = false;
if (file_exists($target_file)) {
$delete = unlink($target_file);
}
...
2

Другие решения

Вы должны перебрать количество строк в результатах $ sql.

$sql = mysqli_query($con,"delete from datas where username='$username' and  imagesnotes='$imagesnotes'");

$loop = mysqli_num_rows($sql);

for ($i=0, $i <= $loop, $i++) {

$delete = unlink($target_file);

if($delete) {
echo '<br>you deleted your file from our server</br>';`
}
else
{
echo 'An error occured';
}
1

По вопросам рекламы [email protected]