PHP MySQL,查询错误
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情
 $sql = "UPDATE `$db_name`.`$tbl_name` SET `u_code` = '$u_code' WHERE `$tbl_name`.`email` = `$mail`;";
        $result=mysql_query($sql);

Whenever an email id (eg: mailme@gmail.com) is entered and the query is run then error occurs (No such e-mail exists in the database , Although it is present) but after some experiments it is found that instead of entering the email-id (eg: mailme@gmail.com) the word "email" is entered and the query is run...it works..but at the same time disturbs whole column {u_code} by changing the value to $u_code for all the database present.

So the problem seems to be in the MySQL query....but I can figure it out.

Thanks for the help! :)

#0

try this:

$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);
}

first put your $xxx inside of a "" string into brackets. that makes it perfectly safe to use a variable directly inside of a string.

second: you should have written '$mail' instead of `$mail`

third: you have an SQL-injection hole that cannot be fixed using mysql_real_escape_string().
The only way to fix SQL-injection holes with dynamic table or database names is to check the input against a list of approved names, as shown in the code.
See this answer for more info: How to prevent SQL injection with dynamic tablenames?

#1

I think the problem is that you should use '$mail' instead of the other quotes as email field can be of any string type.

Hope that helps,

#2

Give this a try. I'm not sure why you are using backticks, but they are probably messing you up:

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

推荐文章

如何为色盲测试图形用户界面?

如何为色盲测试图形用户界面?

推荐文章

从Eclipse中以编程方式安装Eclipse插件?

从Eclipse中以编程方式安装Eclipse插件?

推荐文章

Visual Studion 2008应用程序数据默认值

Visual Studion 2008应用程序数据默认值

推荐文章

如何将Android检测测试推送到模拟器/设备上?

如何将Android检测测试推送到模拟器/设备上?

推荐文章

即席查询将结果分配给局部变量

即席查询将结果分配给局部变量

推荐文章

在只安装了.NET 2.0的系统上运行为.NET 3.5构建的软件

在只安装了.NET 2.0的系统上运行为.NET 3.5构建的软件

推荐文章

平均和/或最大视口高度是多少?

平均和/或最大视口高度是多少?

推荐文章

在带有spring的web应用程序中使用quartz

在带有spring的web应用程序中使用quartz

推荐文章

NSSortDescriptor和多个关系

NSSortDescriptor和多个关系

推荐文章

使用jquery获取具有动态生成名称的字段的值

使用jquery获取具有动态生成名称的字段的值

推荐文章

如何在web上下文中发布XML文件

如何在web上下文中发布XML文件

推荐文章

jQuery中的纯文本选择器

jQuery中的纯文本选择器

推荐文章

如何在vb.net中从request.querystring中获取值

如何在vb.net中从request.querystring中获取值

推荐文章

如何证明多线程是有效的?

如何证明多线程是有效的?

推荐文章

如何标记一个方法将无条件抛出?

如何标记一个方法将无条件抛出?

推荐文章

从SQL中删除最新的X记录的有效方法是什么?

从SQL中删除最新的X记录的有效方法是什么?