2017-04-05 1 views
1

データベースにデータを入力してproduct_idを返すことはできません。PHP MySQLがデータベースにデータを挿入せず、製品IDを0として返す

function product_id(){ 
    $id_data = "INSERT INTO `products` (`product_id`, `date_created`) VALUES('', NOW())"; 
    mysqli_query(database(), $id_data); 

    return $product_id = mysqli_insert_id(database()); 
} 

MySQLの

CREATE TABLE products(
product_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
date_created DATETIME NOT NULL, 
PRIMARY KEY (product_id) 
); 

ここで私は PHP

で関数を呼び出す方法です:私はPRODUCT_IDを返すしようとすると、それは何と一緒に0がデータベースに入力

PHP関数を返します

$product_id = product_id(); 
+0

慎重に。 'LAST_INSERT_ID()'レスポンスは接続ごとの*ローカルなので、他の接続はこれが何をしたのか分かりません。 – tadman

答えて

1

auto_incrementフィールドには挿入できませんtを挿入ステートメントから削除してください。

function product_id(){ 
    $id_data = "INSERT INTO `products` (`date_created`) VALUES(NOW())"; 
    mysqli_query(database(), $id_data); 

    return $product_id = mysqli_insert_id(database()); 
} 

はまた、あなたは、おそらく将来的にmysqliエラーが明示的にゼロを挿入するためにあなたがそれを言っている

http://php.net/manual/en/mysqli.error.php

0

mysqli_error()機能を使用してみてくださいなっていた。

INSERT INTO `products` (`product_id`, `date_created`) VALUES('', NOW()) 

をその空の文字列はINTにキャストされ、ゼロに設定されます。それは自動インクリメントフィールドなので、ちょうどそれを残し、それが次の使用可能な値を選択します:あなたはVALUES('',NOW())を使用して、製品IDにNULLの値を指定している

INSERT INTO `products` (`date_created`) VALUES(NOW()) 
0

クエリの状態が自動インクリメントの主キーであるため、product_idの値を入力する必要はありません。

以下のコード、INSERTクエリで明示的にPRODUCT_IDを定義することなく、うまく動作するはずです:データベース `のような関数()`と

function product_id(){ 
    $id_data = "INSERT INTO `products` (`date_created`) VALUES(NOW())"; 
    mysqli_query(database(), $id_data); 

    return $product_id = mysqli_insert_id(database()); 
} 
関連する問題