Удалить запись в MySQL с php таргетингом auto_incremented int? - PullRequest
0 голосов
/ 15 марта 2010

Почему это удаление не работает для удаления всей записи:

$query = 'DELETE FROM tblEvents WHERE index = $_GET["id"]';
$result = mysql_query($query, $db) or die(mysql_error($db));

Где индекс - это переменная типа int, автоматически добавленная в MySQL?

Ответы [ 4 ]

4 голосов
/ 15 марта 2010

Ваш вопрос php связан, а не mysql.
print $query; и см.
затем обратитесь к синтаксису строк php, http://php.net/types.string для правильного синтаксиса.

Кроме того, переменная, которая идет к запросу, должна быть правильно подготовлена, экранирована или, в случае целочисленного значения, приведена вручную к этому типу,

$id=intval($_GET["id"]);

или, чтобы сделать его одной строкой,

$query = 'DELETE FROM tblEvents WHERE `index` = '.intval($_GET["id"]);

также, индекс - зарезервированное слово, которое также может вызвать проблемы, вы можете избежать его с помощью обратных галочек,

`index`

но будет намного лучше, если вы переименуете его в id

1 голос
/ 15 марта 2010

Вы должны проверить успешность удаления отдельным запросом

$query = 'DELETE FROM tblEvents WHERE index = $_GET["id"]';
mysql_query($query, $db);
if( mysql_affected_rows < 1 ) die();
0 голосов
/ 15 марта 2010

Надеюсь, вы уже знаете это, но вам нужно обеспечить это $_GET['id'], чтобы люди не могли делать SQL-инъекции. Попробуйте вместо этого использовать следующее:

$query = sprintf('DELETE FROM tblEvents WHERE index = %d',mysql_real_escape_string($_GET['id']));

Это также решает проблему использования переменной в одинарных кавычках вместо двойных.

если бы вы хотели, вы могли бы также сделать:

$id = mysql_real_escape_string($_GET['id']);
$query = "DELETE FROM tblEvents WHERE index = {$id}";

Это тоже работает.

0 голосов
/ 15 марта 2010

Col. Шрапнель прав, вы не можете использовать переменные непосредственно в строке в одинарных кавычках. Если вы используете двойные кавычки вокруг вашего запроса, он будет работать.

РЕДАКТИРОВАТЬ: Как сказал полковник Шрапнель в своем комментарии, в этом случае вам также придется изменить двойные кавычки в смещении массива на одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...