2013-03-11 2 views
0

One мою страницу я называю это функция удаленияУдаление определенной записи, сделав функцию удаления

$Sql=mysql_query("SELECT Id FROM products"); 
    $Result=mysql_fetch_row($Sql); 
    $Id=$Result[0]; 
    DeleteRecords("products","Id",$Id) 

на functions.php я сделал эту функцию ниже

function DeleteRecords($Table,$Exp,$Value) 
{ 
if(isset($_GET['delete'])) 
{ 
$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
$Result=mysql_query($Sql); 
if($Result) 
    { 
     echo "<script>alert('Record Deleted')</script>"; 
     echo "<script>window.location='products.php';</script>";  
    } 
} 
} 

Теперь, когда я нажав на ссылку удалить:

<a href='".$_SERVER['PHP_SELF']."?delete=$Id'>Delete</a> 

Его удалить первый ряд. кажется, есть некоторая проблема с $ Id

Пожалуйста, помогите мне, как удалить выбранную мной строку;

Лучшее было бы все, что должно быть сделано в функциях, которые мне нужно просто вызвать функцию на моей странице!

+2

[** Пожалуйста, не используйте '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://www.brightmeup.info/article.php?a_id=2). – insertusernamehere

+1

Чувак Я только начал изучать php, я даже не знаю mysql полностью, как я могу перепрыгнуть через него! –

+1

Чувак, мы здесь, чтобы научить вас * правым * способом – Kermit

ответ

0

Вы выбираете все продукты:

$Sql=mysql_query("SELECT Id FROM products"); 

Затем вы назначаете идентификатор первого элемента $Id:

$Id=$Result[0]; 

Затем вы проходите $Id к вашей функции - то же самое значение называется $Value там :

DeleteRecords("products","Id",$Id) 

И наконец, в вас r вы проверяете, установлен ли $_GET['delete']. И если да, то вы используете $Id от первого элемента результата, прежде чем в удалении запроса (вместо переданного значения в $_GET['delete']:

$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 

Таким образом, вы никогда не использовать значение $_GET['delete']


.

Вы могли бы написать:

DeleteRecords("products","Id", $_GET['delete']); 

и функции:

$Value = intval($Value); 

if (0 != $Value) { 
    $Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
    $Result=mysql_query($Sql); 
    […] 

Это, по крайней мере, предотвращение инъекции SQL. Не подходит для всех ситуаций, но является отправной точкой. Есть хороший сайт о "Bobby Tables", который может дать вам больше информации об этом.

+0

Можете ли вы отправить мне исправленный код? Его первый раз, когда я делаю функции, поэтому мне не хватает понятий! однако мой remove isset отлично работает, когда я навешиваю ссылку на удаление, отображая правильный идентификатор в URL-адресе, но при щелчке он удаляет первую строку таблицы –

+0

и что я должен положить вместо $ Id на моей странице? –

+0

@RaheelExile Я предполагаю, что ваша ссылка генерируется петлей над всеми продуктами, и это уникальная ссылка для каждого продукта? В этом случае вам ничего не нужно менять. – insertusernamehere

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