在PHP中使用变量进行UPDATE

w6lpcovy  于 2023-03-16  发布在  PHP
关注(0)|答案(1)|浏览(150)

我需要更新一条1记录,但只需要触摸它的一列,用户通过表单中的输入给出列的名称。
在我的代码中,我通过$_GET接收变量$ii中的列名,我需要sitanxis方面的帮助
$query_nuevanota = mysql_query("UPDATE nota SET ".$ii." = $nom_aux WHERE id=$id");

$query_nuevanota = mysql_query("UPDATE nota SET $ii = $nom_aux WHERE id=$id");

hl0ma9xz

hl0ma9xz1#

这是一个粗略的示例,但应该可以给予您对需要执行的操作有所了解:

// whitelist of column names which can be accepted via user input
$column_whitelist = ['col1', 'col2', 'col3'];

if (!in_array($_GET['col_name'], $column_whitelist)) {
    // do your error handling
} else {
    $ii = $_GET['col_name'];

    // prepare your SQL query    
    $stmt = $pdo->prepare("UPDATE nota SET `$ii` = ? WHERE id = ?");

    // pass in the variables to be bound to the placeholders in
    // the query and execute it
    $stmt->execute([$nom_aux, $id]);
}

或者,您可以为用户提供一个select元素来选择他们要搜索的列:

<select name="col_name">
    <option value="1">col 1</option>
    <option value="2">col 2</option>
    <option value="3">col 3</option>
</select>

然后在你的PHP中做一些类似的事情:

$column_whitelist = [
    1 => 'my_table_col_1',
    2 => 'my_table_col_2',
    3 => 'my_table_col_3'
];

if (isset($column_whitelist[(int)$_GET['col_name']])) {
    $ii = $column_whitelist[(int)$_GET['col_name']];

    // prepare your SQL query    
    $stmt = $pdo->prepare("UPDATE nota SET `$ii` = ? WHERE id = ?");

    // and so on
}

相关问题