首页 > 解决方案 > 更新查询不采用整数变量

问题描述

更新查询不采用整数变量($user):-

$user = $_POST["user"];
$user = (int)$user;
$sql = "UPDATE users_meta
    SET 
        `meta_value` = '$plan_end'
    WHERE 
        `user_id` = $user AND 
        `meta_name` = 'plan_end'";
$conn->query($sql);

user_idmysql 数据库中的列设置为 int 数据类型。

当我简单地输入一个数字而不是变量时,它可以工作:-

WHERE 
    `user_id` = 37 AND ...

我也尝试过不将数字从字符串转换为整数,但它不起作用。我感觉它与引号有关,所以我根据网上的建议玩弄它,但没有奏效。

标签: phpmysql

解决方案


嗨,我已经在本地测试了您的查询,它工作正常,所以我认为您的查询没有任何问题。

<?php

$mysqli = new mysqli("localhost","root","","test_table");

// Check connection
if ($mysqli -> connect_errno) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
  exit();
}


if(@$_POST["user"])
    {
$user = $_POST["user"];     
$tasone = $_POST["tasone"];
$user = (int)$user;
$sql = "UPDATE test_table SET `TAS_ONE` = '$tasone' WHERE  `user_id` = $user and `TAS_TWO`='dsadsa'";
$mysqli->query($sql);
    }
?>

<form action="" method="post">
  <input type="text" id="user" name="user" value=""><br>
  <input type="text" id="tasone" name="tasone" value=""><br>
  <input type="submit" value="Submit">
</form> 

CREATE TABLE `test_table` (
  `USER_ID` int(9) NOT NULL,
  `TAS_ONE` varchar(200) NOT NULL,
  `TAS_TWO` varchar(200) NOT NULL,
  `TAS_THREE` varchar(200) NOT NULL,
  `TAS_FOUR` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

推荐阅读