Опитвам се да разбера как мога да изтрия множество записи с помощта на квадратчета за отметка. Имам таблица на моята страница, която получава данните от базата данни. Първата колона за всеки ред има квадратче за отметка, което изглежда по следния начин:
<input type="checkbox" name="checked[]" value='.$row['UserId'].' class="checkbox" />
Моят код изглежда така:
<?php
// get required includes
require_once(ROOT_PATH.'connections/mysql.php');
require_once(ROOT_PATH.'admin/controls/users_az/error_messages.php');
// declare variables
$msg = '';
// ------------------------------------------------------------------
// DELETE SELECTED USERS
// ------------------------------------------------------------------
if(isset($_POST['btnDeleteSelected']) && isset($_POST['checked']))
{
$checked = array_map(mysqli_real_escape_string($conn, $_POST['checked']));
$list = "'" . implode("','", $checked) . "'";
$delete_selected = mysqli_query($conn, "DELETE FROM users WHERE UserId IN ($list)")
or die($dataaccess_error);
if($delete_selected)
{
$msg = mysqli_affected_rows($delete_selected).' '.$msg_success;
}
}
elseif(isset($_POST['btnDeleteSelected']) && !isset($_POST['checked']))
{
$msg = $msg_error;
}
?>
Проблем: Естествено това не работи. Това е първият път, когато се опитвам да направя това.
Въпрос: На прав път ли съм с това? Как трябва да променя това, за да работи?
mysql_real_escape_string()
; в противен случай някой може да зададе стойността на квадратче за отметка на нещо неприятно (sql инжекция). - person mway   schedule 27.10.2010mysql_real_escape_string()
на стойност INT, тъй като стойността първо се преобразува в INT, не е необходимо да се дезинфекцира сmysql_real_escape_string()
, всъщност може просто да причини проблеми. - person Zubair1   schedule 26.04.2011