gpt4 book ai didi

PHP使用mysql在变量中发布变量

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

我需要使用区号作为变量的尾端。示例 $publish_page_添加地区编号我正在从我的 url 中获取 $district_num,我已经使用 echo

进行了验证

这是我试过的

$district_num = $_REQUEST['district_num']; // from url and works

$publish_page_.''.$district_num = $district_var['publish_page_'.$district_num.'']; //this does not work

$publish_page_.''.$district_num = addslashes($_POST['publish_page_'.$district_num.'']); //this does not work

$sql = "UPDATE districts SET
publish_page_$district_num = '$publish_page_$district_num' //this does not work and throws error "can not find publish_page_ in field list

WHERE district_num ='$district_num'"; //this works when the above code is removed

跟进更正后的代码...谢谢@cale_b 和@Bill Karwin

     $district_num = (int) $_REQUEST['district_num']; 
$$publish_page = "publish_page_{$district_num}";

$$publish_page = $district_var[ "publish_page_{$district_num}"];

if (isset($_POST['submitok'])):
$$publish_page = addslashes($_POST[$publish_page]);


$sql = "UPDATE districts SET
publish_page_{$district_num} = '$publish_page'

WHERE district_num ='$district_num'";

最佳答案

如果您想了解PHP's variable variables ,它在手册中(我链接到它)。但实际上您并不需要它。

注意 SQL 注入(inject)。您的代码很容易受到攻击。

由于您是使用输入来形成 SQL 列名,因此您不能使用 SQL 查询参数来解决它。但是您可以将输入转换为整数,在这种情况下可以防止 SQL 注入(inject)。

$district_num = (int) $_REQUEST['district_num'];

$publish_page_col = "publish_page_{$district_num}";

上面的代码是安全的,因为 (int) 转换确保 num 变量只是数字。它不可能包含任何可能导致 SQL 注入(inject)漏洞的字符,例如 '\

对于其他动态值,使用查询参数。

$publish_page_value = $_REQUEST["publish_page_4{$district_num}"];

$sql = "UPDATE districts SET
`$publish_page_col` = ?
WHERE district_num = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([ $publish_page_value, $district_num ]);

正如下面@cale_b 的评论,您应该了解在 PHP 中,变量可以在双引号字符串内展开。参见 http://php.net/manual/en/language.types.string.php#language.types.string.parsing有关详细信息。

关于PHP使用mysql在变量中发布变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46799961/

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