在数据库中插入/更新php变量

在数据库中插入/更新php变量,php,sql,mysqli,Php,Sql,Mysqli,我只想问一个问题。如何将php变量插入数据库 我想插入的两个变量是$profitText和$closedb。我试了两种方法,但都没用。请开导我 $mysqli-> query( "UPDATE trade_history1 set close='{$closedb}' WHERE `trade_id` = " . $trade_id); $mysqli->query( "UPDATE trade_history1 set profitandl

我只想问一个问题。如何将php变量插入数据库

我想插入的两个变量是$profitText和$closedb。我试了两种方法,但都没用。请开导我

 $mysqli-> query(
     "UPDATE trade_history1 set close='{$closedb}' 
        WHERE `trade_id` = " . $trade_id);

$mysqli->query(
     "UPDATE trade_history1 set profitandloss='" . addslashes($profittext) . "' 
        WHERE `trade_id` = '" . addslashes($trade_id) . "'");

///////

$mysqli->query(
     "INSERT INTO `trade_history1` (
        user_id, trade_id, selection, date, type, size, bidprice, 
                      offerprice, stoploss, takeprofit,dateclose,close,profitandloss)
          SELECT user_id, trade_id, selection, date, type, size, bidprice, 
                 offerprice, stoploss, takeprofit, 'null','null','null'
           FROM `opentrades`
           WHERE `trade_id` = " . $trade_id);

    $mysqli->query("UPDATE trade_history1 
             set dateclose=CURRENT_TIMESTAMP WHERE `trade_id` = " . $trade_id);
    $mysqli->query("UPDATE trade_history1 
             set close='{$closedb}' WHERE `trade_id` = " . $trade_id);
    $mysqli->query("UPDATE trade_history1 
             set profitandloss='" . addslashes($profittext) . "' 
             WHERE `trade_id` = '" . addslashes($trade_id) . "'");

    $mysqli->query("DELETE FROM `opentrades` WHERE `trade_id` = " . $trade_id);
“无济于事”并不是对所发生事情的一个非常有意义的描述。如果查询被发送到数据库,但没有成功处理,那么数据库会给您一条明确的错误消息,说明原因

此外,不应使用addslashes()来转义拼接到查询中的值。与占位符或一起使用(尽管对于整数数据类型/枚举值的数组查找,显式转换为整数也是一种合理的方法)

在PHP和MySQL之间的边界处进行调试时,最好仔细查看代码发送到数据库的SQL(虽然使用参数绑定在PHP端不可见,但在数据库端可见)

此外,您应该确保在您的开发环境中,PHP检测到的任何错误都可以在某处看到——也许您没有数据库连接


根据您提供的信息,无法判断它为什么会损坏(SQL看起来正常)

尝试单引号引SQL,双引号引php变量,尽管我不确定您是要插入变量还是要将变量求值插入db

首先,您可以在一个查询中更改多个列。因此,您的第一组和最后一组查询可以成为:-

$stmt = $mysqli->prepare("UPDATE trade_history1 
                          set close=?, profitandloss=? WHERE trade_id = ?");
$stmt->bind_param('ssi', $closedb, addslashes($trade_id), $trade_id);

if ( ! $stmt->execute() ) {
   // error processing code
}
与上一组更新类似:-

$stmt = $mysqli->prepare("UPDATE trade_history1 
             SET dateclose=NOW(), close=?, profitandloss=?
             WHERE trade_id = ?";

$stmt->bind_param('ssi', $closedb, ddslashes($profittext), $trade_id);

if ( ! $stmt->execute() ) {
   // error processing code
}
并创建历史记录查询:-

$stmt = $mysqli->prepare(
     "INSERT INTO trade_history1 (user_id, trade_id, selection, date, type, size, 
                              bidprice, offerprice, stoploss, takeprofit,dateclose,
                              close,profitandloss)
      SELECT user_id, trade_id, selection, date, type, size, bidprice, 
             offerprice, stoploss, takeprofit, NULL, NULL, NULL
       FROM opentrades
       WHERE trade_id = ?";

$stmt->bind_param('i', $trade_id);

if ( ! $stmt->execute() ) {
   // error processing code
}

首先,不要使用mysql,而是使用。请注意重要的连接代码

接下来,这里是正确的方法:

$sql = "UPDATE trade_history1 set close=?, profitandloss=? WHERE trade_id = ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($closedb,$profittext,$trade_id))

$mysqli->query('updatetrade\u history1 set close=“{$closedb}”其中
trade\u id
='。$trade\u id);就像这样,有一种联系。只有涉及2变量的2更新不起作用,起作用的只是时间戳。它被键入数据库。