脚本宝典收集整理的这篇文章主要介绍了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."); ?>
如果有人可能知道答案,我会非常感激.我也接受了建议(对于那些不确定的人).
谢谢!
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,请注明来意。