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用于连接字符串) 注意 : >如果这在某些服务器上有效,可能是因为 >有关更多信息,请参阅Using Register Globals >它会带来安全风险 >你的代码有一个很大的SQL injection洞:你应该在查询中使用它之前清理/过滤/转义$id! >如果video.id是字符串,则表示使用 >如果您使用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); 希望这可以帮助 ! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |