2

PHP と Mysql で INSERT INTO を実行しようとしています。

PHPMyadmin で成功する SQL ステートメントは次のとおりです。

INSERT INTO purchase_orders VALUES (
    DEFAULT, 
    '501',
    '80999',
    '149179',
    'EB-0408898',
    '1',
    'Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767',
    '294.43',
    '4767',
    'UPS Ground',
    '11.61',
    'LA',
    'P',
    '1',
    '264.99', 
    DEFAULT, 
    DEFAULT
)

SQL を実行する PHP ステートメントは次のとおりです。

$sql = "INSERT INTO purchase_orders VALUES (
    DEFAULT, 
    '".mysql_real_escape_string($po_num)."',
    '".mysql_real_escape_string($order_id)."',
    '".mysql_real_escape_string($product_id)."',
    '".mysql_real_escape_string($product_code)."',
    '".mysql_real_escape_string($amount)."',
    '".mysql_real_escape_string($product)."',
    '".mysql_real_escape_string($price)."',
    '".mysql_real_escape_string($mfg_code)."',
    '".mysql_real_escape_string($shipping_method)."',
    '".mysql_real_escape_string($shipping_cost)."',
    '".mysql_real_escape_string($s_state)."',
    '".mysql_real_escape_string($status)."',
    '".mysql_real_escape_string($dist_code)."',
    '".mysql_real_escape_string($dist_cost)."', 
    DEFAULT, 
    DEFAULT)";
mysql_query($sql, $dbc);
echo mysql_errno($dbc) . ": " . mysql_error($dbc). "\n";

なぜ挿入ステートメントが PHP で機能しないのか、私は完全に困惑しています。

このSQLコードも同じ結果で試しました...

INSERT INTO purchase_orders(po_num, order_id, product_id, product_code, amount, product, price, mfg_code, shipping_method, shipping_cost, s_state, status, dist_code, dist_cost) VALUES ('501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99')
4

3 に答える 3

0

DEFAULT次の分野では使用しないでください。

INSERT INTO purchase_orders (<colname1>,<colname2>,.....) VALUES ( '501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99')

代わりに、挿入値を列に関連付けて、このように使用します。

于 2012-04-19T18:06:02.390 に答える
0

デフォルト値を挿入するだけの場合は、それらの列の値を null に設定できます。このような:

INSERT INTO purchase_orders VALUES (null, '501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99', null, null)

データベースは、null を要求した列にデフォルトを設定する必要があることを認識します。

于 2012-04-19T18:13:08.693 に答える
0

DBに何かを挿入できますか? mysql_query($sql, $dbc);コードの一部は機能していますか?

デフォルト値はデフォルト値なので、テーブルにデフォルト値を挿入する必要はありません。もちろん、これはテーブル構造を思い起こさせる良い例ですが、省略します。

そうでなければ、VIPIN JAINが提案したようにすれば、すべてがうまくいくはずです。値を挿入する列を定義します。列のデータ型が整数の場合、クエリから一重引用符を除外できます。

それでも、エラー メッセージが表示されないのは奇妙です。データベース接続は機能していますか?


アップデート。これを試して。列に名前を付けて、関数を削除しreal_escape_string()ます。これが機能する場合は追加するか、クエリを連結する前に変数を消去してください。これでうまくいかない場合は、値とテーブル構造に無効な値がないか再確認してください。$sql関数の前後に割り当てようとしている値をエコーし​​ますreal_escape_string()。ひょっとしたら何か変なことをしたのかもしれません。

$sql = "INSERT INTO `purchase_orders` (`column1`,`column2`,`column3`,`column4`,'";
$sql .= "`column5`,`column6`,`column7`,`column8`,`column9`,`column10`,";
$sql .= "`column11`,`column12`,`column13`,`column14`)";
$sql .= " VALUES ('{$po_num}','{$order_id}','{$product_id}',";
$sql .= "'{$product_code}','{$amount}','{$product}','{$price}',";
$sql .= "'{$mfg_code}','{$shipping_method}','{$shipping_cost}',";
$sql .= "'{$s_state}','{$status}','{$dist_code}','{$dist_cost}')";
于 2012-04-19T18:15:08.103 に答える