Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以&;amp;amp;而不是&;amp;尝试更新MySQL数据库时_Javascript_Php_Mysql - Fatal编程技术网

Javascript 以&;amp;amp;而不是&;amp;尝试更新MySQL数据库时

Javascript 以&;amp;amp;而不是&;amp;尝试更新MySQL数据库时,javascript,php,mysql,Javascript,Php,Mysql,我目前正在建立一个“管理”部分,在这里可以使用这一页添加、更新和删除主站点上显示的信息 我的所有脚本都按预期运行,信息被添加到数据库,行被更新和删除,99.9%的情况下没有错误 数据库设置为3列TITLE、DESCRIPTION和Image,当更新任何行时,我使用TITLE中的值作为WHERE语句的引用 但是,任何包含“&”符号的标题都可以很好地下载并按预期插入到我的HTML中,但是当发送到我的更新脚本时,它们会作为&;发送;。这将无法正确注册到更新脚本中,然后更新失败。我知道转义时“&”

我目前正在建立一个“管理”部分,在这里可以使用这一页添加、更新和删除主站点上显示的信息

我的所有脚本都按预期运行,信息被添加到数据库,行被更新和删除,99.9%的情况下没有错误

数据库设置为3列TITLE、DESCRIPTION和Image,当更新任何行时,我使用TITLE中的值作为WHERE语句的引用

但是,任何包含“&”符号的标题都可以很好地下载并按预期插入到我的HTML中,但是当发送到我的更新脚本时,它们会作为&;发送;。这将无法正确注册到更新脚本中,然后更新失败。我知道转义时“&”会转换为“&”,但我无法理解为什么会有第二个“amp;”被派去

有人能解释一下这个问题吗/给我指出解决这个问题的适当文档吗

Javscript函数(dbtable和titler是决定要插入的表的变量)

PHP脚本




    $thetable = htmlentities($_GET['thetable']);
            $currenttitle = htmlentities($_GET['currenttitle']);
            $newtitle = htmlentities($_GET['newtitle']);
            $newdesc = htmlentities($_GET['newdesc']);
            $newimage = htmlentities($_GET['newimage']);

            $db = mysqli_connect($servername, $user, $password);

            if (!$db)
                {
                    echo"NO CONNECTION AVAILABLE";
                    exit();
                }

            mysqli_select_db ($db, "testing");

            $query ="UPDATE `$thetable` SET `TITLE`= '$newtitle', `DESCRIPTION` ='$newdesc', `IMAGE` = '$newimage' WHERE `TITLE` = '$currenttitle'";

            echo$query;

            $results = mysqli_query($db, $query);


            if(!$results)
                {
                    echo"not working";
                    exit();
                }

            echo"updated";



之所以会出现这种情况,是因为您使用了
htmlentities()
,它只会看到
&
字符,因此会从中生成一个实体。您可以从所需的输入字段中删除
htmlentities
,或者执行以下操作:

$value = str_replace('&', '&', htmlentities($value));
或(国际海事组织更好)


htmlentities
不是准备数据插入SQL查询的正确函数。当您将数据引入该上下文时,应针对您将其引入的上下文对其进行适当的处理。JS中的
escape
已被弃用,而且在这里也不是正确的函数。@04FS您能详细说明一下吗?因为你的评论总结起来是“你错了”,没有关于使用什么/去哪里找到有助于解决问题的相关信息的指导。这实际上增加了一个“amp;”价值观。因此,使用A&B作为A*amp;amp;B
$value = str_replace('&', '&', htmlentities($value));
$value = htmlentities(html_entity_decode($value));