这让我感到沮丧。已经工作了大约一个小时,我似乎无法找到解决方法。
我正在为学校的项目管理网站工作,这就是这样的想法:我有一个有一个组合框的表单,这个表单填充了对MySql DB的查询,到目前为止一直很好,在其他网页
在第二页中,我使用POST方法拯救了我需要的值(并且它可以工作!)。所以第二页显示以下内容:
while($row = mysql_fetch_array($result)) {
echo "<b>Codigo Proyecto : </b>" ,$row["codigo_proyecto"] . "<br>";
echo "<b>Nombre Proyecto : </b>" ,$row["nombre_proyecto"] . "<br>";
echo "<b>Presupuesto Inicial : </b>" ,$row["presupuesto"] . "<br>";
}
这显示了我从DB获取的字段,之后有一个buton,这应该让我在点击后更新表格上的一些字段,代码:
echo '<input type="submit" name="guardar" value="Guardar"/>'
if (isset($_POST["guardar"])) {
$insert="update proyectos_info set presupuesto_final='$_POST[presupuesto_final]' where codigo_proyecto=$_POST[selecciona_proyecto]";
echo "insert = " .$insert;
$ejecutar = mysql_query($insert);
}
我似乎无法将变量$_POST[selecciona_proyecto]
传递给我单击按钮以完成查询的部分。我已尝试使用其他变量来存储它,仅使用fetch_array
该字段(即$prueba=$row[0]
)它会一直空着,我知道它的空cos我回应它这是输出
insert = update proyectos_info set presupuesto_final='XX' where codigo_proyecto=
如果您需要整个代码,请告诉我。
提前致谢。
答案 0 :(得分:0)
首先,我将首先说mysql_ *系列函数已经死了。 不要使用
以下是每个PHP文档页面的摘录,其中包含mysql_ *函数
警告 自PHP 5.5.0起,此扩展已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。
假设你的表格是这样的。
<!-- I suspect that part of your problem is you don't have the form set up -->
<form method="POST">
<input type="hidden" name="selecciona_proyecto" value="1"/>
<input type="text" name="presupuesto_final" value="Guardar"/>
<input type="submit" name="guardar" value="Guardar"/>
</form>
以下是您在PDO和mysqli之前的日子里做的事情
$presupuesto_final = mysql_real_escape_string($_POST['presupuesto_final']);
$codigo_proyecto = mysql_real_escape_string($_POST['selecciona_proyecto']);
$insert = "update proyectos_info
set presupuesto_final='$presupuesto_final'
where codigo_proyecto=$codigo_proyecto";
$db = new mysqli("host", "user", "pass", "db_name");
$sql = "update proyectos_info
set presupuesto_final = ?
where codigo_proyecto = ?";
$stmt = $db->prepare($sql);
if (!$stmt) return;
$vals = array($_POST['presupuesto_final'], $_POST['selecciona_proyecto']);
$stmt->bind_param('si', $vals);
$stmt->execute();
答案 1 :(得分:-1)
变化:
$insert="update proyectos_info set presupuesto_final='$_POST[presupuesto_final]' where
codigo_proyecto=$_POST[selecciona_proyecto]";
要:
$insert="update proyectos_info set presupuesto_final='".$_POST['presupuesto_final']."' where
codigo_proyecto=".$_POST['selecciona_proyecto'];
会让它发挥作用。但是,这实际上是一种不好的做法,因为您应该使用预准备语句或其他一些方法来缓解SQL注入。
请查看有关SQL注入的一些资源以及如何防止它们。 Here's a good place to start.
以下文章中的一些代码片段有助于入门:
使用直接PHP:
$result = pg_query_params( $dbh, 'SELECT * FROM users WHERE email = $1', array($email) );
使用mysqli
MySQL Improved扩展处理绑定参数。
$stmt = $db->prepare('update people set name = ? where id = ?');
$stmt->bind_param('si',$name,$id);
$stmt->execute();
答案 2 :(得分:-1)
不知道这是不是问题,但你错过了引号:
$insert="update proyectos_info set presupuesto_final='$_POST[presupuesto_final]' where
codigo_proyecto=$_POST[selecciona_proyecto]";
所以给$ _POST一些引用
$insert="update proyectos_info set presupuesto_final='$_POST['presupuesto_final']' where
codigo_proyecto=$_POST['selecciona_proyecto']";