2015-08-29 3 views
-2

это кодпеременная проблема в Mysqli строке

if($_POST['submit']) { 

$rid = $_GET['rid']; 
$award = $_GET['award']; 
$award_id = $_GET['award_id']; 
$member_id = $_GET['member_id']; 

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_requests SET maa_status = '3' WHERE maa_request_id = '$rid'"); 
$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'"); 

проблема в этой строке

$result = $mysqli->query("UPDATE ".$dbprefix."clanawards_members SET '".$award."' = '1' WHERE maa_member_id = '$member_id'"); 

быть точным SET '".$award."' = '1'

'".$award."' это имя столбца и переменная, и все else работает, но эта часть кода не обновляется.

Мне нужно знать, как заставить переменную работать в этой строке mysqli.

+1

как насчет если вы говорите $ SQL = «создать строку обновления здесь» ... затем повторить его, чтобы увидеть, как это ужасно выглядит – Drew

+0

^^^^ намного проще отладить этот путь –

+0

и что бы это имя столбца было точно; 'Колонного 1 '? 'column 1'? 'column 'xxx''? 'римская колонна храмов богов'? –

ответ

3

"column name would be Testing Award"

Вы должны обернуть это имя столбца в клещи

SET `$award` = '1' 

и не в кавычках, так как он содержит пробел.

MySQL должен был бросить вам синтаксическую ошибку: (см. Методы проверки ошибок ниже).

Либо это, либо переименовать столбец содержит подчеркивание.

I.e .: Testing_Award.

Не используйте дефис, поскольку MySQL интерпретирует Testing-Award как тест минус Премия, в результате чего возникает синтаксическая ошибка, если только не используются обратные ссылки.

Вы также должны использовать подготовленное заявление:

Вы широко открыты для SQL инъекций.


проверки ошибок методы:

Пример:

$res = $mysqli->query($result); 

if ($mysqli->error) { 
    try {  
     throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $mysqli->errno);  
    } catch(Exception $e) { 
     echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >"; 
     echo nl2br($e->getTraceAsString()); 
    } 
} 

или:

$result = mysqli_query($mysqli, $result); 

if (!$result) 
{ 
    throw new Exception(mysqli_error($mysqli)); 
} 

else{ echo "Success."; } 

В идеале, с помощью mysqli_affected_rows() даст вам лучший результат, если запрос был действительно успешный.

+0

спасибо, что сработали –

+0

@NukerViper. Добро пожаловать. –

+0

Я бы использовал подготовленные заявления, но мой навык кодирования не так высок –

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