MySQL将更新参数视为一列

问题描述

| 我有一个包含以下代码的PHP脚本:
$sql = \"UPDATE tbl_p2e_place

            SET 
            `listingName` = $listing_name,`listingDescription` = $listing_description,`listingSpecialOffers` = $listing_special_offers,`listingFoodTypes` = $listing_food_types,`listingAddress` = $listing_address,`CityID` = $listing_city,`listingGPSSouth` = $gps_coordinate_south,`listingGPSEast` = $gps_coordinate_east,`listingLatitude` = $map_latitude,`listingLongitude` = $map_longitude,`listingTime` = $listing_timing,`listingNumber` = $booking_number,`listingEmail` = $email_address,`listingWebsite` = $lisiting_website,`listingTwitter` = $lisiting_twitter,`listingFacebook` = $lisiting_facebook,`listingIsFeatured` = $is_featured,`listingDisplay` = $display

            WHERE listingID = $listing_id\"; 


    if(!mysql_query($sql))
    {
        die(\'Update Error: \' . mysql_error());
    }

    mysql_close($con);
当我想运行查询时,出现以下错误:
Update Error: Unknown column \'Shop\' in \'field list\'
输入商店作为来自表单的输入。 是什么原因引起的,我该如何制止? 问候     

解决方法

        对像这样的变量使用\'\' \“更新tbl_p2e_place
        SET 
        `listingName` = \'\".$listing_name.\"\'................and so on
    ,        您需要在查询中的变量周围加上引号 另一个重要问题:您说此信息来自表单。查找SQL注入并查询环境卫生!     ,        使用PDO,参数化查询或某种ADO抽象层。 您正在做的事情很容易出现SQL注入之类的漏洞,并且容易出错。当然,解决此确切问题的最简单方法是在值之间加上撇号,因为从逻辑上讲,SQL字符串现在看起来像这样:
....
`listingDisplay` = some value without quotes
当然,MySQL Server会告诉您没有名为\'some \'的列,并且您缺少逗号,而实际上您缺少该值前后的撇号。
`listingIsFeatured` = \'$is_featured\',`listingDisplay` = \'$display\'
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...