【发布时间】:2013-12-31 06:08:42
【问题描述】:
我将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õ 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>
【问题讨论】:
-
你有哪些数据库列?当您说您必须“修改第一列”才能使其工作时,您必须更新哪一列以及它是什么类型(varchar、int 等)?
-
嗨!谢谢你的答案。我有这些专栏:id、ayvu、heiseva、nhenohehague、ijepurupy、ysajareko、heijoja、heiavy、nheejoapykuaa haimbohasa、atygua、mboguapyhara、arange。在表格中,如果我不修改“ayvu”,它不会更新任何其他列。如果我修改“ayvu”中的任何内容,它会将修改保存在其他字段中。我不明白为什么会这样。
-
我重新组织了我的代码以使其更易于阅读。我读了很多遍,我仍然找不到问题出在哪里。所有列都是文本,“id”是 int,“arange”是日期。
标签: php forms mysqli prepared-statement