Php 按名称更新用户输入
我正在尝试创建一个脚本来更新一行,从用户输入行到两个不同的行 比如说,表有“timeleft”和“user”。用户将键入“用户”和时间,以便更新“timeleft” 我已经试过了,但是我不能,因为我刚刚开始学习PHP,现在已经有一个星期了Php 按名称更新用户输入,php,sql,Php,Sql,我正在尝试创建一个脚本来更新一行,从用户输入行到两个不同的行 比如说,表有“timeleft”和“user”。用户将键入“用户”和时间,以便更新“timeleft” 我已经试过了,但是我不能,因为我刚刚开始学习PHP,现在已经有一个星期了 $db = mysql_connect(dbhost, dbuser,dbpass); if($db){ mysql_select_db(dbname); print(' <form action="" method="
$db = mysql_connect(dbhost, dbuser,dbpass);
if($db){
mysql_select_db(dbname);
print('
<form action="" method="POST">
<div class="InputLine"><span class="CTBanForm">Nombre: </span><input type="text" name="IntroducedName" placeholder="Nombre..."></div>
<div class="InputLine"><span class="CTBanForm">Tiempo: </span><input type="text" name="IntroducedTime" placeholder="Tiempo en numeros..."></div>
<input type="submit" value="Borrar" name="PerformDelete">
</form>
');
if(empty($_POST['IntroducedName'])){
echo '<div id="IDEmpty">Introduzca un nombre porfavor...</div>';
}else if(empty($_POST['IntroducedTime'])){
echo '<div id="IDEmpty">Introduzca un numero porfavor...</div>';
}else{
/* SQL STATEMENTS! */
$IntroducedNameSQLSelect = 'SELECT '.$_POST['IntroducedName'].'" FROM CTBan_Log';
$IntroducedTimeSQLUpdate = 'UPDATE '.$_POST['IntroducedTime'].'" FROM CTBan_Log WHERE timeleft=?';
/* END SQL STATEMENTS! */
if(!empty($_POST['IntroducedName'])){
mysql_query($IntroducedNameSQLSelect);
if(mysql_query($delete)){
echo '<div id="Hecho"> Hecho. </div>';
}
else{
echo '<div id="NoHecho"> Error, no se pudo realizar. </div>';
}
}
else if(!empty($_POST['IntroducedTime'])){
mysql_query($IntroducedTimeSQLUpdate);
if(mysql_query($delete)){
echo '<div id="Hecho"> Hecho. </div>';
}
else{
echo '<div id="NoHecho"> Error, no se pudo realizar. </div>';
}
}
}
mysql_close($db);
}
首先,您应该停止使用mysql扩展,因为它已被弃用。有关这方面的详细信息,请参见: 第二,回答你的问题: displayform.html:
<form action="processform.php" method="POST">
<div class="InputLine">
<span class="CTBanForm">Nombre: </span>
<input type="text" name="IntroducedName" placeholder="Nombre...">
</div>
<div class="InputLine">
<span class="CTBanForm">Tiempo: </span>
<input type="text" name="IntroducedTime" placeholder="Tiempo en numeros...">
</div>
<input type="submit" value="Borrar" name="PerformDelete">
</form>
processform.php:
<?php
if (isset($_POST['IntroducedName']) && isset($_POST['IntroducedTime'])) {
$mysqli = new mysqli('localhost', 'user', 'password', 'mysampledb');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("UPDATE CTBan_Log SET timeleft=? WHERE user=?");
// assuming user is [s]tring and timeleft is [i]nteger
$stmt->bind_param('is', $timeleft, $user);
$user = $_POST['IntroducedName'];
$timeleft = $_POST['IntroducedTime'];
/* execute prepared statement */
$stmt->execute();
printf("%d Row(s) updated.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
/* close connection */
$mysqli->close();
}
else{
echo "Please go back and complete all form fields!"
}
?>
我找到了解决方案: 感谢hr.anvari,我修复了SQL语句。我用了这个:
'UPDATE CTBan_Log SET timeleft="'.$time.'" WHERE perp_name="'.$_POST['IntroducedName'].'"'
$time = mysql_real_escape_string($_POST['IntroducedTime']); // Had to use this to get numbers passed to Mysql.
而不是这个:p:
/* SQL STATEMENTS! */
$IntroducedNameSQLSelect = 'SELECT '.$_POST['IntroducedName'].'" FROM CTBan_Log';
$IntroducedTimeSQLUpdate = 'UPDATE '.$_POST['IntroducedTime'].'" FROM CTBan_Log WHERE timeleft=?';
/* END SQL STATEMENTS! */
就这些。我需要使用mysqli-tho。感谢Fredy和hr.anvariSQL 撇开最佳实践等问题不谈,您可能想看看这篇文章以获得一些提示。您实际遇到的错误是什么?您打破了SQL中的一些规则。您引入了SQL注入,然后使用了一个prepared statements'方法,其中timeleft=?没有任何约束。不要问自己为什么你的代码不起作用;你会明白我的意思的。我想知道为什么投了反对票?弗雷德,我真的想谢谢你!谢谢hr.anvari!我几乎完成了脚本的修改!那么,您做了哪些更改,以通知访问该问题的其他人?哦,我明白了……完全重写了。没有真正回答为什么他们的代码失败的问题。谢谢。但是现在,这个答案怎么办呢?当Stack允许的时候,你也可以接受你自己的答案-