В MSSQL с использованием драйвера sqlsrv не так много учебных пособий, поэтому я следил за аналогичными учебниками с MySQL и с помощью API sqlsrv, я преобразовывал свой код. Пока все работает, я могу добавить записи со всплывающей формой и т. Д.SQLSRV PHP, удаляющий выбранную запись
Теперь я пытаюсь удалить несколько записей с помощью флажка. Я пробовал все обучающие материалы, которые я смог найти, но он все еще не работает.
После выбора флажка и нажатия удалить вопрос отдельно от скрипта onDelete, который спрашивает меня, хочу ли я удалять записи, нет эффекта.
У меня есть два PHP файлы - SQLTest.php и delete.php.
код из SQLTest.php
<h1>SQL Testing</h1>
<h1>Component Group Modifications</h1>
<table class="table_general">
<tbody>
<tr>
<th>ID</th>
<th colspan="2">MODIFICATIONS</th>
<th colspan="3">APPLICABLE WORKSHEET</th>
<th>Delete</th>
</tr>
<?php
$serverName = "THOMAS-PC\SQLEXPRESS";
$connectionInfo = array("Database"=>"test");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn)
{
echo "Connected to Database !";
}
else
{
echo "Opps - something went wrong !";
die(print_r(sqlsrv_errors(), true));
}
$tsql = "SELECT * FROM dbo.modIndex";
$query = sqlsrv_query($conn, $tsql);
if ($query === false){ exit("<pre>".print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($query))
{
?>
<tr>
<td><?php echo $row["recordID"];?></td>
<td><?php echo $row["first"];?></td>
<td><?php echo $row["second"];?></td>
<td><?php echo $row["third"];?></td>
<td><?php echo $row["fourth"];?></td>
<td><?php echo $row["fifth"];?></td>
<td><input type="checkbox" name="chkDel[]" value="<?php echo $row["recordID"];?>"></td>
</tr>
<?php
}
sqlsrv_free_stmt($query);
?>
</tbody>
<input type="button" value="Delete Selected Records" action="delete.php" method="post" onclick="return onDelete();"/>
</table>
</section>
</section>
код из delete.php
<?php
$serverName = "THOMAS-PC\SQLEXPRESS";
$connectionInfo = array("Database"=>"test");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn === false)
{
echo "<script>alert('Opps - something went wrong !');</script>";
die(print_r(sqlsrv_errors(), true));
}
for($i = 0; $i < count($_POST["chkDel"]);$i++)
{
if($_POST["chkDel"][$i] != "")
{
$tsql = "DELETE FROM dbo.modIndex ";
$tsql = "WHERE recordID = '".$_POST["chkDel"][$i]."' ";
$query = sqlsrv_query($conn, $tsql);
}
}
echo "Record Deleted.";
sqlsrv_free_stmt($tsql);
sqlsrv_close($conn);
?>
Short функция onDelate:
<script language="JavaScript">
function onDelete()
{
if(confirm('Do you want to delete ?')==true)
{
return true;
}
else
{
return false;
}
}
</script>
И мой SQL детали:
база данных -> test -> table: dbo.modIndex recordID - первая - вторая - третья - четвертая - пятая
Заранее благодарю вас за помощь.
Вы уязвимы для [SQL-инъекций] (http://bobby-tables.com). И вы не должны повторять «запись удалена» до тех пор, пока вы НЕ ПОДТВЕРЖДАете, что что-то действительно произошло. вы просто считаете, что ваш запрос на удаление преуспел, что совсем не так. –
Привет, Марк, благодарю вас за совет.Да, я пересмотрю этот код, но мне действительно нужно решить мою проблему с удалением записей. Спасибо. – ThomasW
относительно delete.php: а) проверили ли вы, что данные «выглядят» так, как вы ожидаете? например через var_export ($ _ POST) b) проверили ли вы, что for-loop/if-statement вводится хотя бы один раз? например распечатайте запрос перед отправкой его на сервер sqlserver. c) для возвращаемого значения sqlsrv_query() нет обработки ошибок, см. https://msdn.microsoft.com/en-us/library/cc296200%28v=sql.105%29.aspx – VolkerK