Php 为什么不更新数据库?

Php 为什么不更新数据库?,php,mysql,Php,Mysql,它输出方程式的结果,但不更新DB??我有另一个通过mysql在代码中打开的连接 <?php if($user_new=='Yes'){ $end = strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')) - 1; $now = time(); $time = $end - $now;//Seconds til end of month $percent = $time / 2635200; $min

它输出方程式的结果,但不更新DB??我有另一个通过mysql在代码中打开的连接

<?php
if($user_new=='Yes'){
$end = strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')) - 1;
$now = time(); 
$time = $end - $now;//Seconds til end of month
$percent = $time / 2635200;
$minus_1 = 1 - $percent;

 $server = 'XXXXXXX';
 $user = 'XXXXXXX';
 $pass = 'XXXXXXXX';
 $db = 'XXXXXXX';

$con = mysqli_connect ($server, $user, $pass, $db);
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$user_ID = get_current_user_id();
mysqli_query($con,"UPDATE usermeta SET value=$minus_1 
WHERE user_id='$user_ID' AND meta_key='user_new_mo'");

$user_per = $global_bal * $minus_1;//2635200 = Seconds in 30.5 days
$minus_per = $global_bal - $user_per;
$echo = $minus_per * $user_ghs;
}

elseif($user_new>='0'){
$num_result = mysql_query("SELECT value FROM usermeta WHERE user_id='$user_ID' AND meta_key='user_new_mo'", $hash_con);
$echo = $num_result;
}

在mysql查询中,您必须要区分php变量和字符串,如下图所示

mysql_query($con,"select * from users where userid='".$user_id."'")
例如,对于if$user\u id=ssoft,则查询类似如下所示

select * from userid where userid='ssoft'.

我相信它会对您有所帮助。

尝试一个准备好的语句来帮助您进行变量替换

$stmt = $mysqli->prepare("UPDATE usermeta SET value=? WHERE user_id=? AND meta_key=?");
$stmt->bind_param($minus_1,$user_ID,'user_new_mo');
$stmt->execute();
$stmt->close();

让我们首先假设您没有mysql错误(我看到您没有在代码中检查该错误)。。。您的更新问题(不是更新)很可能与$user\u ID有关。 检查以确保“get_current_user_id()”返回表中[user_id]列中存在的值

接下来。。。如果“get_current_user_id()”不是问题,那么问题就出在您的查询中(我认为这是最有可能的):每当您必须处理字符串中的变量时,请使用大括号。 所以,转身

进入

或者简单地将其连接起来,如:

$query = "SELECT * FROM `x` WHERE `some_column` = '" . $someValue . "'";
只有当字符串用双引号括起来(您的是,所以您在这里没问题)时,才可以对字符串中的变量使用大括号,否则$someVar只是字符串$someVar(即$string='$someVar'),而不是$someVar='abc'$string=“{$someVar}”;-然后$string变成abc
此外,这是一个整数(我想),不需要引号,但它仍然可以工作(与其他方法不同,如果您想输入不带引号的字符串)。

混合
mysql
nysqli
可能不是原因,但这增加了混乱。如果你想知道为什么查询不起作用,你应该做一些错误检查。查找mysqli\u error()
并利用它。1)你确定你从
get\u current\u user\u id()
获得了正确的id吗?2) 列
值是什么类型的
?如果您在代码
中写入echo“updateusermetaset value=$减1,其中user\u id='$user\u id'和meta\u key='user\u new\u mo'
,然后在控制台中运行回显查询,它会工作吗?
WHERE user_id='{$user_ID}'
$query = "SELECT * FROM `x` WHERE `some_column` = '" . $someValue . "'";