Php 从MYSQL表中删除

Php 从MYSQL表中删除,php,mysql,Php,Mysql,我有几个表单可以从用户正在查看的表中删除不同的行。我正在使用MYSQL和PHP。我在另一个页面上有下面相同的代码(据我所知),它运行良好。由于某些原因,我无法让代码执行。它给出了更新失败错误 try { $db = new PDO('mysql:host=$hname;dbname=' . $DBname, $DBusername, $DBpassword, array(PDO::ATTR_PERSISTENT => true)); $db->setAttribut

我有几个表单可以从用户正在查看的表中删除不同的行。我正在使用MYSQL和PHP。我在另一个页面上有下面相同的代码(据我所知),它运行良好。由于某些原因,我无法让代码执行。它给出了更新失败错误

try 
{
    $db = new PDO('mysql:host=$hname;dbname=' . $DBname, $DBusername, $DBpassword, array(PDO::ATTR_PERSISTENT => true));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}

catch ( Exception $ex ) 
{
    die ( 'Cannot Connect to the Database.' );
}

$delete_equipment_single = "DELETE FROM EquipmentItem 
                              WHERE equipmentID = :equipmentID";    


equipment_delete.php
<?php require_once('php/security.php'); ?>
<?php

// Get the ID Tag
if( !isset($_GET['equipmentID'] ))
{
    echo "You Didn't Supply a equipmentID - (equipmentID) [ERROR x1]";
    exit();
}

require_once('php/database.php');

$equipmentID = htmlspecialchars($_GET['equipmentID']);

// Delete the Equipment
$statement = $db->prepare($delete_equipment_single);
$result = $statement -> execute(array(
    ':equipmentID' => $equipmentID
));

// Make Sure Everything Worked
    if( $result == false )
    {
        die('Update Failed, Please Check Your Database. [ERROR x2]');
    }

echo '<meta http-equiv="Refresh" Content="0; url=display_equipment.php?a=1" />'; 

?>
试试看
{
$db=newpdo('mysql:host=$hname;dbname='。$dbname,$DBusername,$DBpassword,数组(PDO::ATTR_PERSISTENT=>true));
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
}
捕获(例外$ex)
{
die('无法连接到数据库');
}
$delete\u device\u single=“从设备项目中删除
其中equipmentID=:equipmentID”;
device_delete.php
改变

更新:启用异常引发并禁用准备模拟

$db = new PDO('mysql:host=localhost;dbname=mydb;charset=UTF-8', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
更新2:更改

$statement = $db->prepare($delete_equipment_single);

改变

更新:启用异常引发并禁用准备模拟

$db = new PDO('mysql:host=localhost;dbname=mydb;charset=UTF-8', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
更新2:更改

$statement = $db->prepare($delete_equipment_single);

这意味着您尝试准备的查询为空。您可以通过运行以下命令进行验证:

var\u dump($delete\u device\u single)
紧跟在
$db->prepare()之前

从您的代码来看,
$delete\u device\u single
是在不同的文件中定义的

这意味着您尝试准备的查询为空。您可以通过运行以下命令进行验证:

var\u dump($delete\u device\u single)
紧跟在
$db->prepare()之前


从您的代码来看,
$delete\u device\u single
是在另一个文件中定义的?

这是使用PDO吗?如果是这样,
var_转储($statement->errorInfo())是什么在上面调用时生成
die()
?为什么要调用
htmlspecialchars
?这用于呈现输出,而不是URI(URI使用完全不同的编码,PHP在幕后为您解码)。您希望改用
intval
(假设
equipmentID
是一个整数)。您的
$语句的类型是什么?如果是mysqli_语句,则execute方法不接受任何参数:。可能您应该在查询中使用“?”字符(而不是:yourId),并使用
$statement->bind_param(“i”,intval($your_id))execute()
之前,我正在使用pdo,但我知道这不是连接问题。EquipmentItem是表,除了删除之外,我在编辑这些数据时没有遇到任何其他问题。这是使用PDO吗?如果是这样,
var_转储($statement->errorInfo())是什么在上面调用时生成
die()
?为什么要调用
htmlspecialchars
?这用于呈现输出,而不是URI(URI使用完全不同的编码,PHP在幕后为您解码)。您希望改用
intval
(假设
equipmentID
是一个整数)。您的
$语句的类型是什么?如果是mysqli_语句,则execute方法不接受任何参数:。可能您应该在查询中使用“?”字符(而不是:yourId),并使用
$statement->bind_param(“i”,intval($your_id))execute()
之前,我正在使用pdo,但我知道这不是连接问题。EquipmentItem是表,除此删除之外,我在编辑此数据时没有遇到任何其他问题。这没用,您是否从PDO收到任何错误、警告或通知?请参阅更新。转向抛出异常。让我们看看它会告诉你什么。也张贴
var_dump($equipmentID)用我的所有代码、db和var转储中的错误更新了第一篇文章。谢谢你的帮助和耐心。说什么。所以我非常感谢你的帮助。我应该被枪毙/绞死,我的头痛是我自己的错。不知道怎么回事,但我忘了包含。那没用,你有没有收到PDO的任何错误、警告或通知?请参阅更新。转向抛出异常。让我们看看它会告诉你什么。也张贴
var_dump($equipmentID)用我的所有代码、db和var转储中的错误更新了第一篇文章。谢谢你的帮助和耐心。说什么。所以我非常感谢你的帮助。我应该被枪毙/绞死,我的头痛是我自己的错。不知道怎么回事,但我忘了包括在内。
$statement = $db->prepare("DELETE FROM EquipmentItem WHERE equipmentID = :equipmentID");
1065 Query was empty' in delete_equipment.php:16 
Stack trace: #0 delete_equipment.php(16): PDO->prepare('') 
  #1 {main} thrown indelete_equipment.php on line 16