2013-09-13 2 views
1

У меня возникли проблемы со следующим кодом для обновления базы данных. Ошибок нет, и я знаю, что это не база данных, потому что у меня есть другой скрипт GET, который использует ту же самую информацию о & и возвращает данные из базы данных просто отлично. Однако база данных просто не обновляется.База данных обновления PHP

<?php 
    define("DB_DSN","xxx"); 
    define("DB_HOST","xxx"); 
    define("DB_USER","xxx"); 
    define("DB_PASS","xxx"); 

    $con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect: ' .mysql_error()); 
    mysql_select_db(DB_DSN) or die('Could not select database');  
    $id = base64_decode($_POST["id"]); 
    $deaths = base64_decode($_POST["deaths"]); 
    $sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ;  
    $uresult = mysql_query($sql,$con); 
    if(! $uresult) 
    { 
     die('Could not update data: ' . mysql_error()); 
    } 
    echo "Updated data successfully\n"; 
    mysql_close($con); 
    exit; 

Может кто-нибудь помочь?

+0

Вы уверены, что ваши '$ _POST' переменные в стемы, что вы ожидаете? Вы уверены, что они закодированы в Base64? –

+0

измените инструкцию 'UPDATE' на' 'UPDATE Level01 SET Deaths = '". $ id. «WHERE DeathID =». $ смертей. "'"; ' – wens

+0

Спасибо за помощь, ребята .... проблема решена! :) – Bellatorius

ответ

2

Это

"UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ; 

должен быть

"UPDATE Level01 SET Deaths ='" . $deaths . "' WHERE DeathID= " . $id . " ; 

я думаю.

+0

Вот и все! Благодаря! :) – Bellatorius

0
$sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ; 

Должно быть

$sql = "UPDATE Level01 SET Deaths ='" . $deaths . "' WHERE DeathID= '" . $id . "'"; 
+0

-1 Это не имеет значения –

+0

Учитывая, что он использует двойные кавычки и пытается объединиться с использованием одинарных кавычек, я бы сказал, что это так. –

+0

О, право. Виноват. –

0

Я предлагаю сделать echo $sql ; и тогда вы будете знать свою ошибку :)

Очки здесь интерпретируется как carácter не как конкатенации оператора, поэтому обновление будет обновлять каждую смерть, которая имеет id ='.value.', не существует в базе данных, а затем Ничего не произошло.

Заменить это:

$sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ; 

К этому:

$sql = "UPDATE Level01 SET Deaths ='$id' WHERE DeathID= '$deaths'" ; 
+0

Вот и все! Благодаря! :) – Bellatorius

+0

@ user2775839, пожалуйста, подтвердите этот ответ, чтобы его можно было увидеть в верхней части и помочь другим –

0

Попробуйте повторить ваши переменные в первом, и вы не нужду '$ ID.'. (на самом деле это должно быть «$ id.»), вы можете написать Deaths = '$ id' или Deaths = '$ deaths' должно быть правильным.

+0

Спасибо за ваш ответ! :) – Bellatorius

0

Привет, пожалуйста, удалите точки из запроса, как показано ниже, и это решит проблему.

$ sql = "UPDATE Level01 SET Deaths = '$ id' WHERE DeathID = '$ deaths'";

+0

Вот и все! Благодаря! :) – Bellatorius

1

Основном вставить этот код без использования переменных:

mysql_query("UPDATE `Level1` SET `Deaths`= '".$deaths."' WHERE DeathID= ".$id."); 
+0

У вас есть уязвимость в SQL-инъекции. – SLaks

+0

Да? Что с этим не так? –

+0

http://xkcd.com/327/ – SLaks

Смежные вопросы