我正在使用MySQL和PHP(OOP)制作一个Web应用程序,该应用程序具有包含多个表的CRUD,我尝试回显变量,但它返回此错误:* 警告:未定义的变量$id_customer*
有人能帮我做错了什么吗?谢谢
if (isset($_GET["id_customer"]) && !empty(trim($_GET["id_customer"]))) {
require_once "../connectDB.php";
$sql = "SELECT * FROM Customers
INNER JOIN Orders
ON Customers.id_customer = Orders.id_customer
WHERE Customers.id_customer = ?";
if ($stmt = $mysqli->prepare($sql)) {
// Bind variables to the prepared statement as parameters
$stmt->bind_param("i", $param_id);
// Set parameters
$param_id = trim($_GET["id_customer"]);
// Attempt to execute the prepared statement
if ($stmt->execute()) {
$result = $stmt->get_result();
if ($result->num_rows == 1) {
/* Fetch result row as an associative array. Since the result set
contains only one row, we don't need to use while loop */
$row = $result->fetch_array(MYSQLI_ASSOC);
// Retrieve individual field value
$id_customer = $row["id_customer"];
$fn_customer = $row["fn_customer"];
$ln_customer = $row["ln_customer"];
$email_customer = $row["email_customer"];
$id_order = $row["id_order"];
$order_dt = $row["order_dt"];
$order_total = $row["order_total"];
/* ?>
// <p><?php echo $id_customer; ?></p>
/ <?php */
}
}
}
// Close statement
$stmt->close();
// Close connection
$mysqli->close();
}
?>
<p><?php echo $id_customer; ?></p>
我试着把echo和字段值的检索放在一起,并从第一条语句中取出,就像现在这样,但这些都不起作用。
2条答案
按热度按时间rqqzpn5f1#
在您的代码中有几个问题,首先,您似乎绑定了(
bind_param
)一个尚未定义的变量($param_id
),这应该是错误的,但最终将从SQL查询中返回零行。其次,在提供的代码中,
$id_customer
变量只会在特定情况下定义。在声明$id_customer
之前,有4个if
语句需要为真。如果这4个语句中的任何一个为假,它将不会被赋值。因此,当您在脚本末尾尝试echo
它时,它将不会被定义。因此出现错误消息。如果不了解脚本想要实现什么,就很难给出答案,但简而言之,
$id_customer
只在if
语句if ($result->num_rows == 1) { /** ... **/ }
中有一个值。以下内容将为您提供所需的输出:
pkln4tw62#
如果
isset($_GET['id_customer'])
为true,并且成功准备并成功执行了语句,则运行查询并初始化$id_customer
。但是,如果没有此类参数,则不会初始化$id_customer
,并且会出现错误。无论如何,请尝试在if
之前初始化它: