我无法将变量值从页面request.php传递到页面response.php,该页面包含存储在mysql数据库的字段中的MD5加密值,用于删除记录。
Request.php页面:
<a href="response.php?crypt=<?php echo $cod_idcrypt; ?>"
onclick="return confirm('Vuoi eliminare il valore?');">Cancella record</a>
Response.php页面:
include("connect.php");
$cod_idcrypt =$_REQUEST['crypt'];
$sql="DELETE FROM tbl_product WHERE cod_idcrypt=".$cod_idcrypt;
$result=mysql_query($sql);
cod_idcrypt标识的记录是正确写入的,因为我验证了id主键cod_id等于cod_idcrypt函数MD5中写入的值。
select md5(123) as cod_id, '202cb962ac59075b964b07152d234b70' from dual;
检查我做了: a)如果在具有加密值的db上进行,则删除功能正常 b)如果使用主键而不是id加密
,则不会出现上述问题我会使用加密值来避免显示网址ID真实。
我该如何解决?
谢谢
答案 0 :(得分:1)
您的MD5字符串将是一个字符串而不是整数,因此您必须在查询中引用$cod_idcrypt
变量。
$sql="DELETE FROM tbl_product WHERE cod_idcrypt='$cod_idcrypt'";
$result=mysql_query($sql) or die(mysql_error());
AND id=5
。MD5(123)将生成以下字符串(而不是整数)。
您可能认为列中的123
整数(如果是这种情况)也可能是您的查询中的整数或被视为整数,但事实并非如此。它是MD5,反过来呈现为字符串。
检查查询错误后会发出语法错误信号。
如评论中所述,您的代码可以使用SQL注入并使用已弃用的MySQL库。
Use mysqli
with prepared statements或PDO with prepared statements,他们更安全。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。