我正在尝试将产品信息插入数据库,但我必须遗漏一些东西。它不会在数据库中插入任何内容,甚至不会显示任何错误。
我的代码出了什么问题?
<?php
if(!empty($product_name)){
if(!empty($product_category)){
////////////////////////////////////////////////
///// connect to database
////////////////////////////////////////////////
$dbc = new mysqli("localhost", "root", "password", "table");
// Check connection
if (mysqli_connect_errno($dbc)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if (isset($_POST['product_name'])) {
$pid = ($_POST['thisID']);
$product_name = ($_POST['product_name']);
$product_category = ($_POST['product_category']);
$product_detail = ($_POST['product_detail']);
$product_price = ($_POST['product_price']);
$product_company = ($_POST['product_company']);
$query = "INSERT INTO product (product_name, product_category, product_price, product_detail,product_detail, product_company)
VALUES ( '$product_name','$product_category','$product_price','$product_detail','$product_company')";
$result= $this->mysqli->query($query) or die(mysqli_connect_errno()."Data cannot inserted");
if($result){
header('location:cp_product.php');
}
mysqli_close($dbc);
}
}}
?>
答案 0 :(得分:2)
在您的查询中,您已添加product_detail
列两次,应该有一列,因为五列指的是5个值
product_detail,product_detail,
INSERT INTO product (product_name, product_category, product_price, product_detail, product_company)
VALUES ( '$product_name','$product_category','$product_price','$product_detail','$product_company');
答案 1 :(得分:0)
product_detail
两次
答案 2 :(得分:0)
这一行错了:
$result= $this->mysqli->query($query) or die(mysqli_connect_errno()."Data cannot inserted");
应该是:
$result = $dbc->query($query) or die ($dbc->error . "Data cannot be inserted");
如果你这样做了,你就会得到列列表与VALUES
列表不匹配的错误,因为你将product_detail
放在列列表中两次。
答案 3 :(得分:0)
我看到你把你的数据库称为“表”
您的数据库名为“table”吗?
首先尝试一下并告诉我们你得到的错误:
不要将procdeural代码与面向obejct的代码混合使用。检查php.net示例。
(暂时删除所有“ifs”。)
$ dbc = new mysqli(“localhost”,“root”,“password”,“table”);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$pid = ($_POST['thisID']);
$product_name = ($_POST['product_name']);
$product_category = ($_POST['product_category']);
$product_detail = ($_POST['product_detail']);
$product_price = ($_POST['product_price']);
$product_company = ($_POST['product_company']);
$query = "INSERT INTO product (product_name, product_category, product_price, product_detail, product_company)
VALUES ( '$product_name','$product_category','$product_price','$product_detail','$product_company')";
echo "query: ".$query."<br>";
mysqli->query($query);
$mysqli->close(); //object oriented.
?>
答案 4 :(得分:0)
您需要数据库连接,在本例中为$ dbc,在您正在设置的HTML表单变量中。
$pid = ($dbc, $_POST['thisID']);
$product_name = ($dbc, $_POST['product_name']);
$product_category = ($dbc, $_POST['product_category']);
$product_detail = ($dbc, $_POST['product_detail']);
$product_price = ($dbc, $_POST['product_price']);
$product_company = ($dbc,$_POST['product_company']);
答案 5 :(得分:0)
没有人这么说!如何通过连接传递查询?
你应该有像
这样的东西$dbc->query( $query )
或者在您的情况下,您在哪里指定$this->mysqli
?
不要将面向对象的样式与过程样式混合,因为这可能会在将来引起混淆。
选择一个并继续以该样式编码。如果你可以选择OOP。
好运