MySQL: возможно ли ПОЛУЧИТЬ ПОЛЕ в ОБНОВЛЕНИИ?

0

Поэтому я мог бы просто забыть что-то глупое просто, но по существу я пытаюсь использовать ОБЛАСТЬ для ОБНОВЛЕНИЯ в MySQL через страницу PHP. У меня также есть тонна IF-заявлений, но, похоже, это не помогает.

<?php
include('config.php');
$username = $_POST['username'];
$charName = $_POST['charName'];
//ID MARKS
$idMarks = $_POST['IDmarks'];
//EXPERIENCE
$EXP = $_POST['EXP'];

$sql = "UPDATE characters 
            SET CASE 
                WHEN idMarks1 IS NULL THEN idMarks1 = '$idMarks' 
                WHEN idMarks2 IS NULL THEN idMarks2 = '$idMarks' 
                WHEN idMarks3 IS NULL THEN idMarks3 = '$idMarks' 
                WHEN idMarks4 IS NULL THEN idMarks4 = '$idMarks' 
                WHEN idMarks5 IS NULL THEN idMarks5 = '$idMarks' 
                WHEN idMarks6 IS NULL THEN idMarks6 = '$idMarks' 
                WHEN idMarks7 IS NULL THEN idMarks7 = '$idMarks' 
                WHEN idMarks8 IS NULL THEN idMarks8 = '$idMarks' 
                WHEN idMarks9 IS NULL THEN idMarks9 = '$idMarks' 
                WHEN idMarks10 IS NULL THEN idMarks10 = '$idMarks' 
                WHEN idMarks11 IS NULL THEN idMarks11 = '$idMarks' 
                WHEN idMarks12 IS NULL THEN idMarks12 = '$idMarks' 
                END

                totalEXP =  totalEXP + '$EXP', 
                remEXP =    remEXP + '$EXP'

            WHERE charName = '$charName' AND username = '$username';
        ";

if ($conn->query($sql) === TRUE) {
header("Location: ../lead.php");
} else {
    echo "Error updating record: " . $conn->error;
}
?>

Идея здесь в том, что обновление добавит новое значение ($ idMarks) в первое нулевое значение, которое оно найдет, а затем перейдет к следующим столбцам EXP. Я не могу использовать массив из-за предыдущих проблем, с которыми я столкнулся с MySQL, и дело в том, что столбцы idMarks - это вид жидкости, следящие раны, раны заживают на шрамах или лимпах, татуировки постоянны и т.д. И т.д., Поэтому они настраиваются на другой странице. Есть ли у кого-нибудь идеи о том, как это сделать?

Теги:
sql-update
field
case

1 ответ

0

У вас есть PHP, зачем делать причуды в SQL?

$error = false;
for($i=1; $i<12; $i++) {
    $sql = "UPDATE characters  SET idMarks$i = '$idMarks'"
        . " WHERE idMarks$i IS NULL AND charName = '$charName' AND username = '$username';";
    $sql2 = "UPDATE characters SET totalEXP =  totalEXP + '$EXP', remEXP =    remEXP + '$EXP'"
        . " WHERE charName = '$charName' AND username = '$username';";

    if ($conn->query($sql) !== TRUE) {
        $error = 'Failed with 1';
        break;
    } else if ($conn->query($sql2) !== TRUE) {
        $error = 'Failed with 2';
        break;
    }
}

 if (empty($error))
     header("Location: ../lead.php");

Я пропущу вопрос о том, "Откуда у вас эта ужасная схема БД", но в этом случае должны возникать такие вопросы, как "Я хочу сделать все в одном запросе" оптимизировать производительность "" необоснованным ".

Производительность SQL не может быть хорошей с помощью схемы с нумерованными столбцами. Сначала идет нормализация, и только в редких случаях вам понадобится денормализация.

  • 0
    Не работает, как он сидит, но я определенно думаю, что вы что-то здесь! Как я уже сказал, наверное, просто упускать из виду нечто глупое простое. Спасибо ... и да, вы, вероятно, правы на БД, но это только работа в процессе и мой первый удар по чему-либо столь сложному. Дело в том, что я сначала пытался использовать массивы для idMarks, но я не мог использовать его всю жизнь, как только пришло время загружать. В любом случае, все еще учусь ... бриллианты не сделаны в день

Ещё вопросы

Сообщество Overcoder
Наверх
Меню