PHP Script для обновления нескольких столбцов в MySQL Table - PullRequest
0 голосов
/ 08 января 2019

Мне нужно обновить несколько столбцов в одной таблице в одной базе данных. Прямо сейчас, когда я запускаю свой PHP-скрипт, он выполняет только первую команду UPDATE, но не обновляет записи, следующие за ним. Я не уверен, что с ним не так:

<?php
$servername = "localhost";
$username = "user";
$password = "pw";
$dbname = "database";

//Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
//Check connection
if($conn->connect_error) {
        die("Connection failed:" . $conn->connect_error);
}

$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";

if (mysqli_query($conn, $sql)) {
        echo "Record updated successfully";
} else {
        echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

Когда я запускаю его из командной строки, он не выдает ошибку, он запускает первое обновление просто отлично. Когда я проверяю базу данных, она фактически обновила «team_id» до «15» в столбце «topic_id» с идентификатором «10», но другие два столбца не обновляются. Почему это?

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Вы определяете одну и ту же переменную снова и снова, топая предыдущую версию. Только последнее определение «прилипает» и запускается.

Либо переключиться на массив:

// Define an array
$sql = [ ];
// Append to the array each query
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";
$sql[] = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";

foreach($sql as $q) {
  // Run query.
}

Или используйте подход IN (...):

UPDATE ost_help_topic SET team_id='15' WHERE topic_id IN (10,17,22)

Где один запрос может обновить несколько значений до одного и того же .

0 голосов
/ 08 января 2019

с помощью простого оператора «ИЛИ» это исправит!

$sql = "UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10 OR topic_id=12 OR topic_id=13"
0 голосов
/ 08 января 2019

Вам необходимо выполнить каждую строку:

//1
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";

if (mysqli_query($conn, $sql)) {
        echo "Record updated successfully";
} else {
        echo "Error updating record: " . mysqli_error($conn);
}

//2
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=17";

if (mysqli_query($conn, $sql)) {
        echo "Record updated successfully";
} else {
        echo "Error updating record: " . mysqli_error($conn);
}

//2
$sql="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=22";

if (mysqli_query($conn, $sql)) {
        echo "Record updated successfully";
} else {
        echo "Error updating record: " . mysqli_error($conn);
}

или создать массив

$arra = array();
$arra[]="UPDATE ost_help_topic SET team_id='15' WHERE topic_id=10";
$arra[]="UPDATE ost_help_topic SET team_id='11' WHERE topic_id=12";
$arra[]="UPDATE ost_help_topic SET team_id='12' WHERE topic_id=13";

и foreach:

foreach ($arra as $sql) {

   if (mysqli_query($conn, $sql)) {
            echo "Record updated successfully";
    } else {
            echo "Error updating record: " . mysqli_error($conn);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...