Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
基于等于列名的PHP变量更新列值_Php_Mysql - Fatal编程技术网

基于等于列名的PHP变量更新列值

基于等于列名的PHP变量更新列值,php,mysql,Php,Mysql,有没有办法根据PHP变量$rating更新列$rating是一个列名 此外,这可能会带来安全风险等,因此我想知道这是否是一个很好的解决方法。首先,您的sql是不正确的,因为我认为在mysql中变量不能是列名。因此,请在mysql数据库中查看您想要更新的确切列。因此,您的sql将类似于 $rating = mysqli_real_escape_string($conn,$_POST['rating']); $id = mysqli_real_escape_string($conn,$_POST[

有没有办法根据PHP变量
$rating
更新列
$rating
是一个列名


此外,这可能会带来安全风险等,因此我想知道这是否是一个很好的解决方法。

首先,您的sql是不正确的,因为我认为在mysql中变量不能是列名。因此,请在mysql数据库中查看您想要更新的确切列。因此,您的sql将类似于

$rating =  mysqli_real_escape_string($conn,$_POST['rating']);
$id = mysqli_real_escape_string($conn,$_POST['id']);
mysqli_query($conn,"UPDATE table SET $rating=$rating+1 WHERE id='$id'");
如果评级不是您的列名,则将其更改为确切的列名。
希望我能帮上忙。

是的,您可以在sql中使用变量名作为字段名。但是,在将其放入sql字符串之前,必须先对其进行验证。因为它不是字段值,所以不能“引用”它


$rating是变量名。它只有价值。如果将列名存储为$rating中的值,则将使用上述查询。它不起作用。例如,如果
$rating=“silver”
则我需要将其设置为
设置silver=silver+1
$rating不是表的列名。因此,您将谨慎地提及列名,如SET
column\u name
=$rating+1@VigneshBala:OP想要增加由
$rating
定义的字段,这可以通过在sql中
设置一些字段=一些字段+1来完成。这不是我想要的,但是我认为我可以根据他们给出的$rating构造一个if/else if语句,并进行单独的查询。我只是想知道是否有一种更快的方法可以实现验证变量列名和执行SQL查询,如答案中所述。
$rating =  mysqli_real_escape_string($conn,$_POST['rating']) + 1;

$id = mysqli_real_escape_string($conn,$_POST['id']);
mysqli_query($conn,"UPDATE `table` SET `rating`=$rating WHERE id='$id'");
$rating =  $_POST['rating'];
// Define list of valid "rating" db field names here
$valid_fields = Array('rating_a', 'rating_b', 'rating_c');

if (in_array($rating, $valid_fields)) {
    $id = mysqli_real_escape_string($conn,$_POST['id']);
    mysqli_query($conn,"UPDATE table SET $rating=$rating+1 WHERE id='$id'");
}