gpt4 book ai didi

PHP MySQL,查询错误

转载 作者:行者123 更新时间:2023-11-29 07:12:05 25 4
gpt4 key购买 nike

 $sql = "UPDATE `$db_name`.`$tbl_name` SET `u_code` = '$u_code' WHERE `$tbl_name`.`email` = `$mail`;";
$result=mysql_query($sql);

每当输入电子邮件 ID(例如:mailme@gmail.com)并运行查询时,就会发生错误(数据库中不存在这样的电子邮件,尽管它存在)但经过一些实验后发现,不是输入电子邮件 ID(例如:mailme@gmail.com),而是输入“电子邮件”一词并运行查询......它有效......但同时扰乱了整体列 {u_code} 通过将所有数据库的值更改为 $u_code。

所以问题似乎出在 MySQL 查询中....但我可以解决。

感谢您的帮助! :)

最佳答案

试试这个:

$allowed_tables = array('table1', 'table2');
$allowed_dbnames = array('db1','db2');

if (in_array($tbl_name, $allowed_tables))
&& (in_array($db_name, $allowed_dbnames)) {

$sql = "UPDATE `{$db_name}`.`{$tbl_name}` SET `u_code` = '{$u_code}'
WHERE `{$tbl_name}`.`email` = '{$mail}';";
$result = mysql_query($sql);
}

首先把你的$xxx里面的一个""字符串放到方括号里。这使得直接在字符串内部使用变量非常安全。

第二:你应该写“$mail”而不是“$mail”

第三:您有一个 SQL 注入(inject)漏洞,无法使用 mysql_real_escape_string() 修复。
修复具有动态表或数据库名称的 SQL 注入(inject)漏洞的唯一方法是根据已批准的名称列表检查输入,如代码所示。
有关详细信息,请参阅此答案:How to prevent SQL injection with dynamic tablenames?

关于PHP MySQL,查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com