MYSQLi更新没有';除非我修改第一列,否则无法工作


MYSQLi UPDATE doesn't work unless I modify the first column

我将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>

最后我发现了问题。首先,有一些变量的名称不匹配。其次,在我检查字段$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.";

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