基于等于列名的PHP变量更新列值
有没有办法根据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[
$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不是表的列名。因此,您将谨慎地提及列名,如SETcolumn\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'");
}