PHP表单无法更新数据库
大家好,我的PHP代码有问题。提交表单时无法更新数据库。我正在努力更新新的价格 以下是我的PHP代码:PHP表单无法更新数据库,php,Php,大家好,我的PHP代码有问题。提交表单时无法更新数据库。我正在努力更新新的价格 以下是我的PHP代码: <?php if(isset($_POST['update'])) { @ $db = new mysqli('localhost','XXXX','XXXX','XXXX'); if(! $db ) { die('Could not connect: ' . mysqli_error()); } $price = $_POST['price']; $sql = "UPDATE
<?php
if(isset($_POST['update']))
{
@ $db = new mysqli('localhost','XXXX','XXXX','XXXX');
if(! $db )
{
die('Could not connect: ' . mysqli_error());
}
$price = $_POST['price'];
$sql = "UPDATE bookprice ".
"SET price = price " ;
mysqli_select_db('books');
$retval = mysqli_query( $sql, $db );
if(! $retval )
{
die('Could not update data: ' . mysqli_error());
}
echo "Updated Price successfully\n";
mysqli_close($db);
}
else
{
?>
表格编号:
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td>
<input name="update" type="submit" id="update" value="Update Price">
<input name="price" type="text" id="price">
</td>
</tr>
</table>
</form>
仍在掌握PHP的过程中。非常感谢任何形式的帮助 删除@
$db = new mysqli('localhost','XXXX','XXXX','XXXX');
并更新查询
$sql = "UPDATE bookprice ".
"SET price = ".$price ;
删除@
$db = new mysqli('localhost','XXXX','XXXX','XXXX');
并更新查询
$sql = "UPDATE bookprice ".
"SET price = ".$price ;
您没有使用
$price
变量将price
列设置为
使用“设置价格=$price”代码>
或内部引号“设置价格='$price'”代码>
现在要做的是“将价格列设置为等于价格列”,而不是从POST变量$price
中获取的预期值。关于这一点,请参见我的答案末尾的脚注
还有一件事:
$retval = mysqli_query( $sql, $db );
您需要反转查询和数据库连接:
$retval = mysqli_query( $db, $sql );
在mysqli\uu
中,首先是连接,然后是查询变量
另外,使用:
$db = new mysqli('localhost','XXXX','XXXX','books');
您在DB连接中使用了所有四个参数,因此您可以删除:
因为您没有对它做任何操作,只需添加books
作为DB的参数
将第四个参数与DB的名称一起使用,与将mysqli\u select\u DB
与DB的名称和连接变量一起使用是相同的,这是您没有使用的
- 阅读手册
在中还缺少一个右大括号
else
{
?>
如果在此之后您没有任何东西,请执行以下操作:
else
{
echo "Fail";
}
?>
脚注:
如果您的价格包含一个美元符号、一个点或它们的组合,或者SQL不同意的其他东西(我认为它可能会同意),您需要将其用引号括起来:
$sql = "UPDATE bookprice SET price = '$price' " ;
或
如果列是int
类型,则可以使用
$sql = "UPDATE bookprice " . "SET price = ".$price;
您没有使用$price
变量将price
列设置为
使用“设置价格=$price”代码>
或内部引号“设置价格='$price'”代码>
现在要做的是“将价格列设置为等于价格列”,而不是从POST变量$price
中获取的预期值。关于这一点,请参见我的答案末尾的脚注
还有一件事:
$retval = mysqli_query( $sql, $db );
您需要反转查询和数据库连接:
$retval = mysqli_query( $db, $sql );
在mysqli\uu
中,首先是连接,然后是查询变量
另外,使用:
$db = new mysqli('localhost','XXXX','XXXX','books');
您在DB连接中使用了所有四个参数,因此您可以删除:
因为您没有对它做任何操作,只需添加books
作为DB的参数
将第四个参数与DB的名称一起使用,与将mysqli\u select\u DB
与DB的名称和连接变量一起使用是相同的,这是您没有使用的
- 阅读手册
在中还缺少一个右大括号
else
{
?>
如果在此之后您没有任何东西,请执行以下操作:
else
{
echo "Fail";
}
?>
脚注:
如果您的价格包含一个美元符号、一个点或它们的组合,或者SQL不同意的其他东西(我认为它可能会同意),您需要将其用引号括起来:
$sql = "UPDATE bookprice SET price = '$price' " ;
或
如果列是int
类型,则可以使用
$sql = "UPDATE bookprice " . "SET price = ".$price;
试试看:
<?php
if($_POST['update']){
$db = new mysqli('localhost','XXXX','XXXX','XXXX'); // remove '@'
if(!$db){
die('Could not connect: ' . mysqli_error($db)); // Needs the database connection
}
$price = $_POST['price'];
$sql = "UPDATE `bookprice` SET `price` = '$price'"; // Use the variable $price
// mysqli_select_db('books'); // This should already be set in the new mysqli();
$retval = mysqli_query($db, $sql); // Turn this around;
if(!$retval) {
die('Could not update data: ' . mysqli_error($db)); // needs the database connection
} else {
echo "Updated Price successfully\r\n"; // \r\n will always work \r or \n alone will not always work
}
mysqli_close($db);
}
else {
echo 'There was no post';
}
?>
尝试一下:
<?php
if($_POST['update']){
$db = new mysqli('localhost','XXXX','XXXX','XXXX'); // remove '@'
if(!$db){
die('Could not connect: ' . mysqli_error($db)); // Needs the database connection
}
$price = $_POST['price'];
$sql = "UPDATE `bookprice` SET `price` = '$price'"; // Use the variable $price
// mysqli_select_db('books'); // This should already be set in the new mysqli();
$retval = mysqli_query($db, $sql); // Turn this around;
if(!$retval) {
die('Could not update data: ' . mysqli_error($db)); // needs the database connection
} else {
echo "Updated Price successfully\r\n"; // \r\n will always work \r or \n alone will not always work
}
mysqli_close($db);
}
else {
echo 'There was no post';
}
?>
事实上,如果您直接使用$parameter处理查询,它会带来安全风险
$price=$\u获取[“price”](从URL)
$price=$\u POST[“price”](来自表单POST)
更新bookprice
SETprice
=“$price”
您应该尝试使用准备好的语句,如
更新bookrprice set price=:价格
或
更新bookrprice set price=
然后创建一个与安全性关联的键值对,并将其传递到查询中。这就是为什么不建议使用mysql_查询,而是使用mysqli或PDO方法的原因
然后,您可以将上述语句配对为
执行(数组(“:price”=>$price))
或
执行(数组($price))事实上,如果直接使用$parameter处理查询,就会带来安全风险
$price=$\u获取[“price”](从URL)
$price=$\u POST[“price”](来自表单POST)
更新bookprice
SETprice
=“$price”
您应该尝试使用准备好的语句,如
更新bookrprice set price=:价格
或
更新bookrprice set price=
然后创建一个与安全性关联的键值对,并将其传递到查询中。这就是为什么不建议使用mysql_查询,而是使用mysqli或PDO方法的原因
然后,您可以将上述语句配对为
执行(数组(“:price”=>$price))
或
执行(数组($price))在SQL查询中使用外部输入之前,对其进行转义如何?听说过SQL注入吗?请编辑您的帖子,解释一下您的代码在做什么,以及为什么它能解决OP的问题。在SQL查询中使用外部输入之前,先对其进行转义如何?听说过SQL注入吗?请编辑你的帖子,解释你的代码在做什么,以及为什么它会解决OP的问题。有没有任何答案有用?有没有任何答案有用?