Показывать сообщение, когда я не становлюсь отвечающим современным требованиям база данных

У меня есть формуляр, который обновляет реестр в базе данных. (Оно функционирует правильно). Проблема - что, когда не выполняется условие where он показывает мне правильное Обновление, хотя он не становится отвечающим современным требованиям.

Поскольку я делаю для того, чтобы, когда я не стану отвечающим совремнным требованиям, он сказал мне, что я не становлюсь отвечающим современным требованиям

<form method="POST" action="update.php">
  <label for="pedido"># Pedido</label>
  <input type="text" name="pedido" id="doc">
  <label for="texto">Valor abono</label>
  <input type="text" name="pagoabono"  id="texto">
  <input type="submit" value="Enviar abono" name="btn_abono">
</form>

<?php
 if(isset($_POST['btn_abono'])) {
   include("abrir_conexion.php");
   $pedido    = $_POST[ 'pedido' ];
   $pagoabono = $_POST[ 'pagoabono' ];
   $conex = mysqli_connect($host,$usuariodb,$clavedb,$basededatos);
  // Check connection
  if (mysqli_connect_errno()) {
  echo "Fallo la conexion: " . mysqli_connect_error();
  }
  mysqli_query ($conex, "UPDATE $tabla_db1 SET pagoabono ='$pagoabono' where pedido= '$pedido'")
  or die("No se actualizo");
  include("cerrar_conexion.php");
  echo("Actualizacion correcta");
  }
?>
1
задан 21.06.2017, 23:58
2 ответа

ты нуждаешься в том, чтобы получить поврежденные линии, можешь делать это с:

mysqli_affected_rows($conex);

только проверяет, что поврежденные линии были больше, чем 0, число поврежденных линий - число реестров, которые стали отвечающими совремнным требованиям, если поврежденных линий 0, означает, что никакая линия cumpliГі с where asГ - что не стали отвечающими совремнным требованиям.

mysqli_query ($conex, "UPDATE $tabla_db1 SET pagoabono ='$pagoabono' where pedido= '$pedido'")
  or die("No se actualizo");
  if (mysqli_affected_rows($conex)>0){
     echo("Actualizacion correcta");
  } else {
     echo("Pedido no encontrado");
  }
  include("cerrar_conexion.php");

Кроме того ты, должно быть, имеешь в виду, что твой query - suceptible в атаки вставки SQL, тебе пробует давать возвращение из-за:

¿ Có mo предотвращать inyecció n SQL в PHP?

2
ответ дан 24.11.2019, 08:05

Я показываю тебе пример actualizaciГіn использованного MySQLi.

cГіdigo estГЎ объясненный в комментариях.

BГЎsicamente шаги serГ-an, однажды полученная она conexiГіn.

  1. Писать консультацию, применяя критерий консультаций, приготовленных к предотвращать InyecciГіn SQL .
  2. Распределять в переменных стоимость, которая идет использовать в консультации
  3. Готовить консультацию посредством prepare
  4. Оценивать, если preparaciГіn у него была она Г©xito. Он может не иметь Г©xito, если ты например пишешь имя таблицы, которая не существует, или совершаешь ошибки синтаксиса в консультации
  5. , Если она preparaciГіn она правильна, ты делаешь bind из стоимости, которую ты хочешь обновить. Таким образом стоимость путешествуют отделенные от нее instrucciГіn SQL в sГ, - которым InyecciГіn SQL затрудняется, почти предотвращается. Я это говорю, потому что ничто не 100 % безопасных.
  6. Ты Выполняешь консультацию и evalГєas в то же время результат ее ejecuciГіn. execute devolverГЎ true, если она ejecuciГіn она была успешной, тогда podrГЎs показывать сообщение с количеством линий, затронутых update, используя для этого affected_rows
  7. Ты Закрываешь ресурсы места.

Замечает: Данные о подмостках и колоннах были помещены для доказательства в demo, ты должен заменять их на твои.

Надеялся, что он подает тебя.

cГіdigo

ВИДЕТЬ DEMO

<?php

    require "util/public_db_info.php";

    $mysqli = new mysqli($host_name, $user_name, $pass_word, $database_name, $port);

    /*
        * Las consultas preparadas sustituyen los valores reales
        * por signos de interrogación en MySQLi
    */

    $sql = "UPDATE books   SET title=? WHERE id=?";    

    /*
        * Almacenar en variables los datos a usar
        * Cambia las variables puestas a mano 
        * por las variables tuyas
    */
    $titulo= "Gracias a la vida";  
    $id= 2;         

    //Preparar la consulta
    $stmt=$mysqli->prepare($sql);

    //Evaluar si  la preparación tuvo  éxito

    if ($stmt){
         /*
           * Pasar parámetros separados  de la instrucción SQL
           * la letras "si" indican el tipo de cada dato que se va a insertar
           * s: String, si es una cadena , i: Integer, si fuera un entero, etc
           * Ejecutar
        */

        $stmt->bind_param("si", $titulo,$id);

         /*
           * Verificar el resultado de la ejecución
           * sabiendo que, en el caso de UPDATE, como en el caso 
           * de INSERT, $stmt devuelve TRUE si fue exitosos
        */


        if ($stmt->execute()) {

        /*
          * Imprimir la cantidad de filas actualizadas usando affected_rows
        */

        printf("%d Fila(s) actualizada(s).\n", $stmt->affected_rows);
        }
        else 
        {
            echo "No se pudo actualizar";
        }

        /*
         * Cerrar $stmt para liberar recursos
        */

        $stmt->close();

    }
    else 
    {
        echo "Hubo un error preparando la consulta";
    }

         /*
         * Cerrar conexión a la bd para liberar recursos
        */


    $mysqli->close();


    ?>

оказавшиеся

1 Fila(s) actualizada(s).
1
ответ дан 24.11.2019, 08:05

Теги

Похожие вопросы