为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 MySQL SELECT 中正确获取输入值(WordPress 上的 Ajax)

如何在 MySQL SELECT 中正确获取输入值(WordPress 上的 Ajax)

PHP
慕妹3242003 2022-01-08 17:44:55
我正在尝试在 SELECT 查询中使用输入字段值,但它以 null 或数组形式返回。我得到了 jQuery 的值,我正在尝试用它在 WordPress 上使用 Ajax 进行查询。我的 HTML<input name="estado" type="radio" id="some-id" value="some-value">我的 jQuery$("#col1 input:radio").change(function(){    var ufname= $(this).val();    $.post({        url: "http://192.168.64.2/monsoy/site/variedades/resultados-de-produtividade/estado-variedade",        type: "POST",         data: ufname,         success: function(data) {            $("#col2").html(data);        },        error: function(e) {            console.log( e);        }    });    return false;});我的 PHP$sSQL = "   SELECT mapa_produtividade_variedade, mapa_produtividade_uf            FROM " . $wpdb->prefix . "mapa_produtividade              ";    $sSQL .= " WHERE mapa_produtividade_uf = '".addslashes(strip_tags($_POST[]))."'";$sSQL .= " GROUP BY mapa_produtividade_variedade";  $results = $wpdb->get_results( $sSQL , ARRAY_A );                     if ($results) : foreach($results as $row) : ?>  echo-results使用<?php var_dump($_POST['estado']); ?>,我得到 NULL。<?php var_dump($_POST); ?> 会给我  ["MT"]=>  string(0) ""} 我的MT查询只需要那个(只有两个字符),但我可以在没有整个数组的情况下得到它。我刚开始学习 PHP、Ajax 和 MySQL,所以我想我错过了一些非常简单的东西。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

好的,所以你使用$_POST没有键的超级全局数组,所以如果你没有为 jQuery 中的数据提供键 = 值,$_POST 将无法在没有表单编码的键 = 值的情况下工作。


例如 key=value&key2=value2


因此,如果您不这样做,则需要阅读原始php://input流file_get_contents("php://input");


另一种选择是更改var ufname= $(this).val();为var ufname= {val:$(this).val()};和


$sSQL .= " WHERE mapa_produtividade_uf = '".addslashes(strip_tags($_POST[]))."'";


$sSQL .= " WHERE mapa_produtividade_uf = '".addslashes(strip_tags($_POST['val']))."'";

此外,addslashes不是将字符串转义到 SQL 中的有效方法,使用绑定参数或至少内置模块转义器,请阅读:http : //shiflett.org/blog/2006/addslashes-versus-mysql -real-escape-string


我的意思是我可以通过 Web Inspector 控制台在您的页面上使用 jQuery 并运行


(function(){

 $.post({

        url: "http://192.168.64.2/monsoy/site/variedades/resultados-de-produtividade/estado-variedade",

        type: "POST", 

        data: "�' OR 1 = 1 /*", 

        success: function(data) {

            console.log(data)

        },

        error: function(e) {

            console.log(e);

        }

    });

})(jQuery);

我发送的那个字符串在 php 中 chr(0xbf).chr(0x27).' OR 1=1 /*';


查看完整回答
反对 回复 2022-01-08
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信