为什么不更新数据库?

时间:2014-04-18 06:30:09

标签: 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;
$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;
}

3 个答案:

答案 0 :(得分:2)

尝试使用预准备语句来帮助进行变量替换。

$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();

答案 1 :(得分:0)

在mysql查询中,您必须要区分php变量和字符串,例如Eg。

mysql_query($con,"select * from users where userid='".$user_id."'")

例如,如果 $ user_id = ssoft,则查询类似于此,

select * from userid where userid='ssoft'.

我确定它会帮助你。

答案 2 :(得分:0)

首先假设你没有mysql错误(我看到你没有在你的代码中检查它)...很可能你的更新问题(不更新)应该与$ USER_ID。 检查以确保&#34; get_current_user_id()&#34;返回表中[user_id]列中存在的值。

下一步......如果&#34; get_current_user_id()&#34;不是问题,那么问题出在你的查询中(我认为这是最有可能的):每当你必须处理字符串中的变量时,使用花括号。 所以,转

WHERE user_id='$user_ID'

WHERE user_id='{$user_ID}'

或者简单地将它连接起来:

$query = "SELECT * FROM `x` WHERE `some_column` = '" . $someValue . "'";

对于字符串中的变量使用花括号只有在字符串用双引号括起来时才有效(你的确是这样,所以你好了),否则$ someVar只是字符串 $ someVar (即$ string =&#39; $ someVar&#39;)而不是$ someVar =&#39; abc&#39 ;; $ string =&#34; {$ someVar}&#34 ;; - 然后$ string变为 abc 此外,这是一个整数(我想),不需要引号,但它仍然可以工作(不像其他方式,如果你想输入一个没有引号的字符串)。