除非我修改第一列,否则MYSQLi UPDATE不起作用

时间:2013-12-12 17:27:45

标签: php forms mysqli prepared-statement

我正在使用mysqli准备好的语句,我试图创建一个表单来更新行中的数据。但它只在我修改第一列时才有效。我经常搜索,一无所获。服务器不显示任何错误,如果我不修改表单中的第一个字段,则不执行任何操作。

我正在努力建立瓜拉尼语的在线数据库。现在我正在写一个表格来更新学期信息。

我有两个页面:第一页是要搜索的表单并选择一个术语。 所选术语的ID将传递到第二页。

第二页:
1°验证是否发送了更新表单中的提交按钮,以便更新数据库中术语的信息,否则
2°从所选术语获取id,从第一页传递,否则为 3°显示消息“您必须选择一个术语来修改它”。

我重新组织了更好的代码。我很抱歉我的英语。我试图翻译一些东西,使修改更容易。

<!DOCTYPE HTML>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../css/ypy_style.css" />
<title>Introducir termino nuevo</title>
</head>

<body>
<div id="content-wrapper">

<?php include'zayvu_header.php';?>

<div id="principal">
<b><h2>Ayvu Ñemoambue</h2></b><br>
<?php 
//*****************VERIFY IF  ENVIAR IS PRESSED***********************************

    //Comprueba si se presiono el boton ñemboguapy
    if(isset($_POST['enviar'])){ // SE HIZO ENVIAR

        include("../joapyra/aka_joaju_tuicha.php");
    include("../joapyra/aka_secure_data.php");

        // conectarse a la base de datos
    $dblink= new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

    // verificar la conexion
    if (mysqli_connect_error()) {
            echo "Ndaikatúi ñambojoaju base de datos rehe:". mysqli_connect_error();
            exit();
    }

    //Inicializa las variables a partir de los datos del formulario
    $id_seguro= secure_data($dblink, $_POST['idact']);
    $ayvu_seguro=  secure_data($dblink, $_POST['ayvu']);
    $heiseva_seguro=secure_data($dblink, $_POST['heiseva']);
    $nhenohehague_seguro=secure_data($dblink, $_POST['nhenohehague']);
    $ijepurupy_seguro=secure_data($dblink, $_POST['ijepurupy']);
    $ysajareko_seguro=secure_data($dblink, $_POST['ysajareko']);
    $nheejoapykuaa_seguro=secure_data($dblink, $_POST['joapykuaa']);
    $heijoja_seguro=secure_data($dblink, $_POST['heijoja']);
    $heiavy_seguro=secure_data($dblink, $_POST['heiavy']);
    $haimbohasa_seguro=secure_data($dblink, $_POST['haimbohasa']);
    $atygua_seguro=secure_data($dblink, $_POST['atygua']);
    $mboguapyhara_seguro=secure_data($dblink, $_POST['mboguapyhara']);
    $arange_seguro=secure_data($dblink, $_POST['arange']);


        //Comprueba si estan vacios los campos importantes
    if(empty($ayvu_seguro)|| empty($heiseva_seguro) || empty($mboguapyhara_seguro)){
        $error_message = "This fields: ayvu, he'iséva or mboguapyhára must be filled.";
        }else{ //ELSE SI NO ESTAN VACIOS

            if (!$stmt = $dblink->prepare("SELECT ayvu FROM ayvuryru WHERE ayvu=?")){

                $error_message = "error in the statement.";

            }else{
                // unir parametros con marcadores
                $stmt->bind_param("s", $ayvu_seguro);

                // ejecutar pedido
                $stmt->execute();

                // Almacenamos el resultado
                $stmt->store_result();

                // Obtenemos el número de filas que ha devuelto la consulta
                $NumeroRegistros = $stmt->num_rows;

                if ( $NumeroRegistros > 0 ) {

                        $error_message = "This ayvu is already registered.";

                }else{ //ELSE INSERTAR DATOS

                    if (!$stmt = $dblink->prepare("UPDATE ayvuryru SET ayvu= ?, heiseva= ?, nhenohehague= ?, ijepurupy= ?, ysajareko= ?, heijoja= ?, heiavy= ?, nheejoapykuaa= ?, haimbohasa= ?, atygua= ?, mboguapyhara= ?, arange= ? WHERE id= ?")) {

                                $error_message = "Error in the statement.";
                    }else{
                                // unir parametros con marcadores
                    $stmt->bind_param("sssssssssssss", $ayvu_seguro, $heiseva_seguro, $nhenohehague_seguro, $ijepurupy_seguro, $ysajareko_seguro, $heijoja_seguro, $heiavy_seguro, $nheejoapykuaa_seguro, $haimbohasa_seguro, $atygua_seguro, $mboguapyhara_seguro, $arange_seguro, $id_seguro);

                    // ejecutar pedido
                    $stmt->execute();

                                echo "The information of ayvu is updated";
            }
                }

            }   

      } //ELSE SI NO ESTAN VACIOS

     //Cierra la conexion
     mysqli_close($dblink); 

} else{
?>
<?php
//**********************GET DATA FROM FIRST PAGE**********************
?>

<?php
//Inicia la variable de error
$error_message = "";
$satisfactorio = "";

//Comprueba si se presiono el boton nhemboguapy
 if(!isset($_POST['selected_ayvu'])){

     echo "You must select an ayvu to modify it.";

     echo "</div>";
     echo "</div>";
     echo "</body>";
     echo "</html>";
 }else{
 ?>
<?php
//*****************IF A WORD IS SELECTED, PREPARES FORM TO UPDATE***********************
    $actualizable = $_POST['selected_ayvu'];
    echo $actualizable;
        include("../joapyra/aka_joaju_tuicha.php");
        include("../joapyra/aka_secure_data.php");

        // conectarse a la base de datos
    $dblink= new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

    // verificar la conexion
    if (mysqli_connect_error()) {
            echo "Ndaikatúi ñambojoaju base de datos rehe.". mysqli_connect_error();
            exit();
    }
        $id=secure_data($dblink, $_POST['selected_ayvu']);

        //prepara el statement
        if (!$stmt = $dblink->prepare("SELECT ayvu, heiseva, nhenohehague, ijepurupy, ysajareko, nheejoapykuaa, heijoja, heiavy, haimbohasa, mboguapyhara, arange, atygua FROM ayvuryru WHERE id=?")){

             $error_message = "Error in the statement.";

        }else{
            // Pasar los parametros a los marcadores
            $stmt->bind_param("s", $id);

            // Ejecutar el pedido
            $stmt->execute();


            // Almacenar los datos para poder usar num_rows
            $stmt->store_result();

            if( $stmt->num_rows <= 0) {
                echo "no se encontro nada.";
            }
            //unir resultado variables del resultado
            $stmt->bind_result($ayvu, $heiseva, $nhenohehague, $ijepurupy, $ysajareko, $nheejoapykuaa, $heijoja, $heiavy, $haimbohasa, $mboguapyhara, $arange, $atygua);
            //entregar resultado
            $stmt->fetch();
            ?>
    <p>Emyatyr&#245; ayvu rehegua ha upéi ejopy "ñemboguapy"pe.</p>
<div id="formularionhemboguapy">

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
<?php    

?>
<input type="hidden" value="<?php echo $id;?>" name="idact">
Ayvu<br/><input type="text" name="ayvu" value="<?php echo $ayvu;?>"><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
Atygua<br/><input type="radio" name="atygua" value="tero" checked>tero
        <input type="radio" name="atygua" value="teroja">teroja
        <input type="radio" name="atygua" value="terarangue">terarängue
        <input type="radio" name="atygua" value="nheeteva">ñe'ëtéva
        <input type="radio" name="atygua" value="nheeteja">ñe'ëteja
        <input type="radio" name="atygua" value="nheeriregua">ñe'ëriregua<br/>
        <input type="radio" name="atygua" value="joajuha">joajuha
        <input type="radio" name="atygua" value="nheendyi">ñe'ëndýi
        <input type="radio" name="atygua" value="moteiha">moteïha
        <input type="radio" name="atygua" value="nheepehetai">ñe'ëpehëtai<br/>
He'iséva<br/><textarea name="heiseva" id="heiseva" cols="55" rows="2"><?php echo $heiseva; ?></textarea><br/>
Ñenohehague<br/><textarea name="nhenohehague" id="nhenohehague" cols="40" rows="3"><?php echo $nhenohehague; ?></textarea><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
Ijepurupy<br/><textarea name="ijepurupy" id="ijepurupy" cols="55" rows="2"><?php echo $ijepurupy;?></textarea><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
Ysajareko<br/><textarea name="ysajareko" id="ysajareko" cols="55" rows="2"><?php echo $ysajareko;?></textarea><br/>
Ñe'ejoapykuaa<br/><textarea name="joapykuaa" id="joapykuaa" cols="55" rows="2"><?php echo $nheejoapykuaa;?></textarea><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
He'isejoja<br/><input type="text" name="heijoja"  value="<?php echo $heijoja;?>"><br/>
He'ise'avy<br/><input type="text" name="heiavy" value="<?php echo $heiavy;?>"><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
Haimbohasa<br/><input type="text" name="haimbohasa" value="<?php echo $haimbohasa;?>"><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<fieldset class="ayvurehegua">
Mboguapyhára<br/><input type="text" name="mboguapyhara" value="<?php echo $mboguapyhara;?>"><br/>
Arange<br/><input type="text" name="arange" value="<?php echo $arange;?>"><br/>
</fieldset>
</div>
<div class="conjuntocampos">
<br/><input type="submit" class="boton" value="nhemboguapy" name="enviar">  <input type="reset" class="boton" value="oï ypyva'ekue"><br/>
</div>
</form>
</div>
<?php

}            


?>
<?php } // CIERRA ALTERNATIVA A NO SE ELIGIO AYVU ?>
<?php } // CIERRA ALTERNATIVA A VERIFICACION DE SI SE HIZO ENVIAR ?>
<?php } // CIERRA ALTERNATIVA A SI NO ESTA LOGUEADO ?>
</div>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

最后我发现了问题。首先,有一些变量,名称不匹配。 其次,在我检查字段$ ayvu,$ heiseva和$ mboguapyhara之后不是空的。我有一段代码检查数据库中是否已存在$ ayvu。如果$ ayvu存在,它不会更新任何东西。最大的问题是。这部分:

if (!$stmt = $dblink->prepare("SELECT ayvu FROM ayvuryru WHERE ayvu=?")){

                $error_message = "error in the statement.";

            }else{
                // unir parametros con marcadores
                $stmt->bind_param("s", $ayvu_seguro);

                // ejecutar pedido
                $stmt->execute();

                // Almacenamos el resultado
                $stmt->store_result();

                // Obtenemos el número de filas que ha devuelto la consulta
                $NumeroRegistros = $stmt->num_rows;

                if ( $NumeroRegistros > 0 ) {

                        $error_message = "This ayvu is already registered.";

三天的头痛让我发现自己的错误!