обновление нескольких строк с помощью php в базу данных mysql

#php #mysql #rows

#php #mysql #строки

Вопрос:

Я пытаюсь обновить несколько строк здесь.Однако я не могу указать правильный идентификатор строки.

 <?php
$table = 'DynamicPage';
$query = mysql_query(Query::SelectAllFrom($table));
// Count table rows 
$count = mysql_num_rows($query);
while ($row = mysql_fetch_array($query)) {
    $id[] = $row['ID'];
    echo '        
                    <h3>Column name: </h3><input type="text" name="name" maxlength="30" value="' . $row['Name'] . '" />

                    <h3>Tekst: </h3><textarea type="text" name="fulltext[]" maxlength="2000">' . $row['FullText'] . '</textarea>';
}
echo '<input name="Submit" type="submit" value="Submit" />
                      </form>';
// Check if button name "Submit" is active, do this 
if (isset($_POST['Submit'])) {
    for ($i = 0; $i < $count; $i  ) {
        $queryUP = mysql_query("UPDATE $table SET Name='" . $_POST['name'] . "' WHERE id='??????????????'");
        $result  = mysql_query($queryUP);
    }
    if ($result) {
        header("location:index.php");
    }
}
?>
  

Пока я могу обновить первую строку (если id = ‘1’) с последней <h3>Column name: </h3><input type="text" name="name"... Я знаю, что я неправильно передаю идентификаторы, но у меня есть представление о синтаксисе. Если у кого-нибудь есть идея, пожалуйста, дайте мне знать 🙂
Спасибо

Комментарии:

1. Ваш скрипт прямо сейчас широко открыт для вмешательства (взлома) с помощью SQL-инъекции. Окружите переменные для ввода запроса с помощью mysql_real_escape_string() : SET Name='".mysql_real_escape_string($_POST['name'])."' WHERE id...

2. Вам нужно будет немного лучше описать свою цель. Из вашего кода трудно понять, чего вы на самом деле пытаетесь достичь здесь, и как первый запрос, генерирующий идентификаторы, связан со вторым.

3. Я должен создать простую панель администратора, где я «выбираю» все столбцы из определенной таблицы. Как только пользователь вносит изменения, кнопка «обновить» должна инициировать «обновить запрос mysql». Итак, основываясь на идентификаторе строки из запроса «select», я должен обновить строки. Вот почему я использую этот идентификатор.

Ответ №1:

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

HTML-часть

 <input type="hidden" name="id[]" value="'.$row['ID'].'" />
<h3>Column name: </h3><input type="text" name="name[]" maxlength="30" value="'.$row['Name'].'" />
<h3>Tekst: </h3><textarea name="fulltext[]" maxlength="2000">'.$row['FullText'].'</textarea>';
  

PHP

 for($i=0; $i<count($_POST['ID']);   $i){
//query goes here
}
  

SQL-ЗАПРОС

 UPDATE $table SET Name='{$_POST['name'][$i]}', Tekst='{$_POST['fulltext'][$i]}' WHERE id='{$_POST['id'][$i]}'
  

Это из моей головы, не тестировалось, но должно дать вам представление.
И, конечно, экранируйте все поля ввода.

Комментарии:

1. Я попытался реализовать ваше предложение, к сожалению, данные остаются неизменными. Данные находятся «внутри», но запрос не может увидеть выбранный идентификатор

2. На самом деле, это может быть проблемой case (ID против id). Я обновил свой запрос.

Ответ №2:

Попробуйте это после вашего $_POST['Submit'] isset теста:

 for($i=0;$i<sizeof($id);$i  ) {
    $queryUP = mysql_query("UPDATE $table SET Name='".$_POST['name']."' WHERE id = " . $id[$i]);
    $result = mysql_query($queryUP);
}
  

Ответ №3:

тип ввода ="text" ids="id[]" maxlength="30" value ="'.$row['id'].'"
// затем отправьте часть 
for($i=0; $i<count($_POST['id'];$i   ) {
$queryUP = mysql_query("ОБНОВИТЬ имя НАБОРА таблиц $='".$_POST['name']."' ГДЕ id='$_POST['id'][$i]'");
$result = mysql_query($queryUP); 
}

Ответ №4:

Вы можете объединить $row[‘ID’] и $ row [‘Name’], чтобы создать имя, которое вы сможете проанализировать позже

 <h3>Column name: </h3><input type="text" name="name" maxlength="30" 
     value="' . $row['ID']  . '_' . $row['Name'] . '" />
  

затем вы можете использовать что-то вроде:

 list($name, $id) = explode($_POST['name'], '_');
  

** также обратите внимание, что при использовании пользовательского ввода непосредственно внутри инструкции SQL возникает угроза безопасности