以下是我尝试用来编辑数据库中的条目的内容:
<?php
$connect=mysqli_connect("localhost","root","");
mysqli_select_db($connect,"bodylab");
if (mysqli_connect_errno())
{
echo"Failed to connect to MySql: " .mysqli_connect_error();
}
$id=$_GET['idb'];
$date=$_GET['date'];
$usage=$_GET['usage'];
$amount=$_GET['amount'];
if (isset($_GET['edit']))
{
mysqli_query($connect,"UPDATE expand_p SET date='$date', usage='$usage',
amount=$amount WHERE id=$id");
header("location: admin_expand.php");
}
else if(isset($_GET['cancel']))
{
header("location: admin_expand.php");
}
?>
我没有收到错误消息,但它无法正常工作。
我的表expand_p
包含以下列:
id(int), date(date), usage(varchar), amount(int)
我在这里做错了什么?
答案 0 :(得分:0)
首先,让我解决您在代码中遇到的一些问题,我建议您真正关注它们,并思考如何解决它们。
现在让我们开始使用一段应该修复代码的代码;我将使用OOP方法。
使用我们的OOP方法
创建一个新连接$connect = new mysqli( 'localhost', 'root', '', 'bodylab' );
// check for an error
if ($this->_connection->connect_error)
{
trigger_error("Connection Error: " . $this->_connection->connect_error(), E_USER_ERROR);
}
创建连接后,现在从代码开始更新数据库。
if ( isset( $_GET['edit'] ) && urlencode( $_GET['edit'] ) )
{
// Encode the URL when creating the variables
$id = htmlentities( $_GET['idb'] );
$date = htmlentities( $_GET['date'] );
$usage = htmlentities( $_GET['usage'] );
$amount = htmlentities( $_GET['amount'] );
// create sql
$sql = "UPDATE expand_p SET date = ?, usage = ?, amount = ? WHERE id = ?";
// prepare query
if ($stmt = $connect->prepare( $sql ))
{
// bind the params
$stmt->bind_param('sssi', $date, $usage, $amount, $id);
// execute the query
$stmt->execute();
// check for errors
if ($stmt->errno)
{
$message = array(
'is_error' => 'danger',
'message' => 'Error: ' . $stmt->error
);
}
// make sure at least 1 or more rows were affected
if ($stmt->affected_rows > 0)
{
$message = array(
'is_error' => 'success',
'message' => 'Success: ' . $stmt->affected_rows . ' rows were updated.'
);
}
else
{
// if not, send warning to user
$message = array(
'is_error' => 'warning',
'message' => 'Warning: ' . $stmt->affected_rows . ' rows were updated.'
);
}
// close your connection
$stmt->close();
}
else
{
$message = array(
'is_error' => 'warning',
'message' => 'There are no records in the `' . $table . '` table.'
);
exit;
}
}
请不要按原样使用代码,这是一个快速解决方案,可以解决您手头的问题;将其视为学习脚本,并对其进行改进。
要查看任何错误,您可以检查$message
变量,它会告诉您哪里出错了。
// first check if variable exists
if ( isset( $message ) )
{
// if it does print it
print_r( $message );
}
然后你的输出应该是一个带有is_error
和message
键的数组,你会看到错误,你可以追溯到它在过程中发生的位置。