2013-11-28 7 views
0

Я пытаюсь удалить определенную строку из таблицы, используя php. Я последовал за проводником в Интернете, который сделал таблицу с данными в ней с кнопкой удаления рядом с каждой строкой.Проблема с удалением определенной строки в php

Когда нажата кнопка удаления, она должна удалить строку, используя первичный ключ «id». Вместо этого он выполняет инструкцию «if» и перекликает «Ошибка».

Использование echo var_dump ($ _ GET) Я считаю, что он передает id, но предложение WHERE каким-то образом не получает идентификатор.

Если я удалить ИНЕКЕ, она будет работать, но, конечно, удалить все данные внутри таблицы

PHPDelete

<?php 

$host="localhost"; // host name 
$username="root"; // database username 
$password="root"; // database password 
$db_name="school"; // database name 
$tbl_name="Student"; // table name 



mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 
?> 
<!--creating the table --> 
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td colspan="5" bgcolor="#FFFFFF"><strong>Delete data</strong> </td> 
</tr> 

<tr> 
<td align="center" bgcolor="#FFFFFF"><strong>id</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Age</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Username</strong></td> 
<td align="center" bgcolor="#FFFFFF">&nbsp;</td> 
</tr> 

<?php 
while($rows=mysql_fetch_array($result)){ 
?> 

<tr> 
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Name']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Age']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Username']; ?></td> 
<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td> 


</tr> 

<?php 




// close while loop 
} 

?> 

</table> 

<?php 
// close connection; 
mysql_close(); 
?> 

и phpDelete2

<?php 


$host="localhost"; // host name 
$username="root"; // database username 
$password="root"; // database password 
$db_name="school"; // database name 
$tbl_name="Student"; // table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select database"); 

// get value of id that sent from address bar 


$id = $_GET['id']; 

// Delete data in mysql from row that has this id 



$sql="DELETE FROM $tbl_name"; 

$result=mysql_query($sql); 

// if successfully deleted 
if($result){ 
echo "Deleted Successfully"; 
echo "<BR>"; 
echo "<a href='index.php'>Back to main page</a>"; 
} 

else { 
echo "error"; 
} 
?> 

<?php 
// close connection 
mysql_close(); 
?> 
+0

Конкретизируйте ваши проблемные линии и обновление с должности. На данный момент в этом вопросе много ненужной информации –

+0

FYI, mysql_functions устарели от php 5.5.x! Вместо этого вы должны переключиться на mysqli. http://php.net/manual/en/migration55.deprecated.php –

+1

Добро пожаловать в переполнение стека! [** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –

ответ

0

Вы никогда не потрудился на самом деле эхо вашего идентификационного значения:

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td> 

должен быть

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=<?php echo $id ?>'>delete</a></td> 
               ^^^^^^^^^^^^^^^^^ 

Как, НИКОГДА положить что-то, как опасное, как операции удаления в простую ссылку. Посмотрите, что произойдет, если ваш браузер решит «предварительно загрузить» все связанные страницы? Внезапно вы удаляете ВСЕ, что вы указали на странице.

Ваш запрос DELETE также не требует использования идентификатора, который вы пытались передать, и просто удалит ВСЕ в вашей таблице. Он должен быть

DELETE FROM yourtable WHERE id = ID_VALUE_GOES_HERE 

Будьте в курсе SQL injection attacks, а также ...

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