PHP不会从MySQL中删除

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP不会从MySQL中删除脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
出于某种原因,JavaScript / PHP不会从MysqL删除我的数据!这是问题的破败.

我有一个数组,以一种很好的格式显示我所有的MysqL条目,并带有一个按钮,可以单独删除每个条目的条目.它看起来像这样:

<?PHP

            include("login.PHP");

        //connection to the database
        $dbhandle = MysqL_connect($hostname,$username,$password)
         or die("<br/><h1>Unable to connect to MysqL,please contact support at support@michalkopanski.COM</h1>");

        //select a database to work wITh
        $selected = MysqL_select_db($dbname,$dbhandle)
          or die("Could not select database.");

        //execute the sql query and return records
        if (!$result = MysqL_query("SELECT `id`,`url` From `videos`"))
        echo 'MysqL error: '.MysqL_error();

        //fetch tha data from the database
        while ($row = MysqL_fetch_array($result)) {
           ?>

       <div class="video"><a class="<?PHP echo $row{'id'}; ?>" href="http://www.youtube.com/watch?v=<?PHP echo $row{'url'}; ?>">http://www.youtube.com/watch?v=<?PHP echo $row{'url'}; ?></a><a class="del" href="javascript:confirmation(<? echo $row['id']; ?>)">delete</a></div>

<?PHP }

//close the connection
MysqL_close($dbhandle);
?>

删除按钮有一个javascript:javascript:确认(<?echo $row ['id'];?>),所以一旦你点击删除,它就会运行:

<script tyPE="text/javascript">
<!--
function confirmation(ID) {
    VAR answer = confirm("Are you sure you want to delete this video?")
    if (answer){
        alert("Entry Deleted")
        window.location = "delete.PHP?id="+ID;
    }
    else{
        alert("No action taken")
    }
}
//-->
</script>

从理论上讲,JavaScript应该将’ID’传递给页面delete.PHP.该页面看起来像这样(我认为这就是问题所在):

<?PHP

include ("LOGin.PHP");

MysqL_connect($hostname,$password)
 or die("Unable to connect to MysqL");

MysqL_select_db ($dbname)
or die("Unable to connect to database");

MysqL_query("DELETE FROM `videos` WHERE `videos`.`id` ='.$id.'");
echo ("Video has been deleted.");
?>

如果有人可能知道答案,我会非常感激.我也接受了建议(对于那些不确定的人).

谢谢!

解决方法

在delete.PHP脚本中,您正在使用以下行:

MysqL_query("DELETE FROM `videos` WHERE `videos`.`id` ='.$id.'");

$id变量不存在:您必须从$_GET变量初始化它,如下所示:

$id = $_GET['id'];

(这是因为您的页面是使用HTTP GET请求调用的 – 即参数在URL中传递)

此外,您的查询感觉很奇怪:相反:

MysqL_query("DELETE FROM `videos` WHERE `videos`.`id` = '$id' ");

删除’.’ :你已经在一个字符串里面了,所以没有什么可以连接的(PHP中的dot operator用于连接字符串)

注意 :

>如果这在某些服务器上有效,可能是因为register_globals

>有关更多信息,请参阅Using Register Globals
>但请注意,此“功能”已被弃用,并且绝对不应使用!

>它会带来安全风险
>并且应该在PHP 6中消失 – 这将是一个很好的改变,即使它打破了几个旧的应用程序

>你的代码一个很大的SQL injection洞:你应该在查询中使用它之前清理/过滤/转义$id!

>如果video.id是字符串,则表示使用mysql_real_escape_string

>如果您使用MysqLi或PDO扩展,您还可以查看准备好的语句

>使用整数,您可以调用intval以确保实际获得整数.

所以,最后,我会说你应该使用看起来像这样的东西:

$id = $_GET['id'];
$escaped_id = MysqL_real_escape_string($id);
$query = "DELETE FROM `videos` WHERE `videos`.`id` = '$escaped_id'";
// Here,if needed,you can output the $query,for debugging purposes
MysqL_query($query);

希望这可以帮助 !

脚本宝典总结

以上是脚本宝典为你收集整理的PHP不会从MySQL中删除全部内容,希望文章能够帮你解决PHP不会从MySQL中删除所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。