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

你能在你的数据库中插入任何东西吗?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 回答
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

如果您试图让它插入默认值,您可以将这些列的值设置为空。像这样:

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)

数据库会发现它需要将默认值放在您要求为空的列中。

于 2012-04-19T18:13:08.693 回答