2014-04-18 3 views
2

그것은 방정식의 결과를 저장하지만 DB를 업데이트하지 않습니다. 난 당신이 PHP 변수이 예와 같은 문자열을 다른하고자합니다 MySQL의 쿼리에서 MySQL을 통해이 시점에서 코드에서 열린 다른 연결 ...DB가 업데이트되지 않는 이유는 무엇입니까?

<?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; 
} 
+2

mysql과 nysqli를 섞어서는 안되지만 여기에 혼란이 따릅니다. 쿼리가 작동하지 않는 이유를 알고 싶다면 ** 오류 검사 **를 수행해야합니다. mysqli_error()를 찾아서 사용한다. –

+0

1) get_current_user_id()에서 적절한 id를 얻었습니까? 2) 'value'열은 어떤 유형입니까? – MSadura

+0

당신의 코드'echo "를 쓸 경우 usermeta SET 값 = $ minus_1 WHERE user_id = '$ user_ID'AND meta_key = 'user_new_mo'"'그런 다음 콘솔에서 echoed query를 실행하면 작동합니까? – user15

답변

0

있습니다. $ USER_ID =이 ssoft 다음 쿼리는 다음과 같이 유사한 경우

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

예를 들어,은,

select * from userid where userid='ssoft'. 

IAM SURE IT는 당신을 도울 것입니다.

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

것은 대부분의 아마 당신의 업데이트 문제 (업데이트 없음) ...의 당신이 (당신이 코드에서 그것을 확인하지 않는 참조)에는 MySQL의 오류가 없다는 것을 먼저 가정하자 $ 용할 user_ID 함께 할 수있는 뭔가가 있어야합니다 . "get_current_user_id()"가 테이블의 [user_id] 열에있는 값을 반환하는지 확인하십시오.

다음 ... "get_current_user_id()"가 문제가 아닌 경우 쿼리에 문제가 있습니다 (가장 가능성이 높음) : 문자열 안의 변수를 처리해야 할 때마다 곱슬 바지 멜빵. 그래서,

WHERE user_id='{$user_ID}' 

WHERE user_id='$user_ID' 

을 켜거나 단순히 좋아 연결할 : 문자열 내부 변수 중괄호의

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

사용이 문자열에 싸여 경우에만 유효합니다 당신이 여기에 오면 괜찮습니다. 그렇지 않으면 $ someVar는 단순히 문자열 $ someVar (즉 $ string = '$ someVar')과 반대가됩니다. o $ someVar = 'abc'; $ string = "{$ someVar}"; - 그럼 $ 문자열이 될 것입니다 abc 또한 정수가 (나는) 따옴표에 대한 필요가 없을 것입니다,하지만 여전히 작동해야합니다 (따옴표없이 문자열을 입력하려는 경우 다른 방법과는 달리).

관련 문제