2012-04-19 4 views
2

Я в тупике. Я пытаюсь сделать INSERT INTO с PHP и Mysql.PHP Mysql INSERT INTO с ошибками

Вот SQL заявление, который преуспевает в PhpMyAdmin:

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 
) 

Вот мой PHP оператор запуска SQL:

$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') 

каждого человека была наиболее ценится, и это дало мне большие идеи в то, что проблема может быть. Я узнал, что пытаюсь использовать mysql_query в таблице InnoDB, не работает.

Еще раз спасибо!

+0

То же самое с mysqli/pdo_mysql или можно ли использовать расширение mysql по умолчанию? как выглядит структура таблицы? $ dbc ресурс? – Hajo

+1

вы можете повторить оператор $ sql перед вызовом mysql_query, чтобы доказать, что часть кода действительно вызвана? – bumperbox

+0

Вот что я показываю над кодом SQL выше. –

ответ

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') 

Вместо использовать его как это, сопоставляя значения вставки к колоннам.

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) 

База данных будет выяснить, что нужно ставить по умолчанию в колонках, где вы просили нуль.

+0

INSERT INTO purchase_orders VALUES (NULL, '501', '80999', '149179', 'EB-0408898', '1', 'Thompson Center Barrel Encore 26 \ "Нержавеющая сталь рифленая 35 Whelen 4767', '294.43 ',' 4767 ',' UPS Ground ',' 11.61 ',' LA ',' P ',' 1 ',' 264.99 ', NULL, NULL) - работает в phpmyadmin, не идет с PHP и по-прежнему нет ошибок. –

+0

Всегда ли он заменяет NULL значением по умолчанию или только если в нем указано NOT NULL? – octern

0

Можете ли вы вставить что-нибудь в свою БД? Работает ли ваша mysql_query($sql, $dbc); часть вашего кода?

Нет необходимости вставлять значения по умолчанию в таблицу, ведь они являются значениями по умолчанию. Конечно, это приятное напоминание о вашей структуре таблиц, но я бы оставил это.

В противном случае, если вы сделаете так, как VIPIN JAIN предложили, чтобы все работало. Определите столбцы, в которые вы вставляете значения. Вы можете оставить одиночные кавычки из запроса, если тип данных colum является целым числом.

Все еще странно, вы не получаете сообщения об ошибке. Вы уверены, что соединение с базой данных работает?


Обновление. Попробуй это. Назовите колонки и удалите функцию 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}')"; 
+0

Я работаю, перед этим у меня есть запрос, который отлично работает. –

+0

@Chris Проверьте мой обновленный ответ. –