-1

ブラウザーのフィールドに入力して製品の追加を押すと、データベースに追加する代わりに、列数が行 1 の値の数と一致しませんが返されます。

<?php
if (isset($_POST['name'])) {

$name = mysql_real_escape_string($_POST['name']);
$price = mysql_real_escape_string($_POST['price']);
$shipping = mysql_real_escape_string($_POST['shipping']);
$quantity = mysql_real_escape_string($_POST['quantity']);
$description = mysql_real_escape_string($_POST['description']);
$keywords = mysql_real_escape_string($_POST['keywords']);
$category = mysql_real_escape_string($_POST['category']);

$sql = mysql_query("SELECT id FROM products WHERE name='$name'");
$productMatch = mysql_num_rows($sql);
if($productMatch > 0){
    echo'sorry name of film is already in database';
    exit();
}
$sql = mysql_query("INSERT INTO products (name,price,shipping,quantity,description,keywords,category)VALUES
('$name','$price','$shipping','$quantity','$description','$keywords','$category',now)") or die(mysql_error());
$id = mysql_insert_id();
$newname = "$id.jpg";
move_uploaded_file($_FILES['fileField']['tmp_name'], "./images/$newname");
}
?>
<?php

$product_list = "";
$sql = mysql_query("SELECT * FROM products");
$productCount = mysql_num_rows($sql);
if($productCount > 0){
    while($row = mysql_fetch_array($sql))   {
    $id = $row["id"];
    $name = $row["name"];
    $catagory = $row["catagory"];
    $price = $row["price"];
    $product_list .="";
    }
    }
    else {
    $product_list = "You have no products";
    }

?>
<?php echo $product_list; ?>

 <here is a form that contains all required data    

<?php include 'includes/overall/footer.php' ; ?>    

管理者としてデータベースに製品を追加できるように、これを使用することをお勧めします。

4

2 に答える 2

1

エラーはそれ自体で非常に明確Column count doesn't match value countです。クエリの値にnowは最後にが含まれていますが、その対応する列について言及するのを忘れています。

あなたのコラム:

name,price,shipping,quantity,description,keywords,category

一方の値:

'$name','$price','$shipping','$quantity','$description','$keywords','$category',now

注: 新しいコードで関数を使用しないでくださいmysql_*。それらはもはや維持されておらず、公式に非推奨になっています。赤いボックスが表示されますか?代わりにプリペアドステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを決定するのに役立ちます。

于 2013-03-16T18:16:00.877 に答える
0

このクエリに何か問題があります。フィールドを見逃したと思います

$sql = mysql_query("INSERT INTO products (name,price,shipping,quantity,description,keywords,category)VALUES
('$name','$price','$shipping','$quantity','$description','$keywords','$category',now)") or die(mysql_error());

ここには7つのフィールドがあります

name,price,shipping,quantity,description,keywords,category

しかし、ここには8つの値があります。

'$name','$price','$shipping','$quantity','$description','$keywords','$category',now

したがって、値のフィールド名を見つけてnowください。これで問題が解決します。

ノート:

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、公式に非推奨になっています。赤いボックスがか?代わりにプリペアドステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを決定するのに役立ちます。

于 2013-03-16T18:15:55.810 に答える