2013-08-17 4 views
0

Очень странно. Я не вижу, что здесь происходит. Соединение с базой данных MySQL выполнено, но не будет INSERT из PHP. Это нормально, если я запустил запрос в Phpmyadmin.Запрос MySQL INSERT работает в Phpmyadmin, но не в PHP

$rawquery = " 
    INSERT INTO $log_table_name 
     (ref, timestamp, txn_id, email, item_name, item_number, custom, mc_gross, mc_currency, paypal_message) 
    VALUES 
     (NULL, CURRENT_TIMESTAMP, '$txn_id', '$payer_email', '$item_name', '$item_number', '$custom', '$payment_amount', '$payment_currency', 'INVALID'); 
"; 
echo $rawquery; 
$query = mysql_query($link, $rawquery) or die('Could not access table'); 

Производит:

INSERT INTO wp_ipn_log 
    (ref, timestamp, txn_id, email, item_name, item_number, custom, mc_gross, mc_currency, paypal_message) 
VALUES 
    (NULL, CURRENT_TIMESTAMP, '', '', '', '', '', '', '', 'INVALID');Could not access table 

Я ожидаю INVALID сообщение, я просто хочу, чтобы вставить в базу данных.

Является ли проблема форматом запроса, или есть проблема с базой данных или что-то еще?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ (по желанию vinodadhikary):

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db(DB_NAME, $link) or die ("Could not open db ".mysql_error()); 

Это работает отлично.

+1

проверить, если имя пользователя и пароль правильны и имеют разрешение на запись в таблице – bansi

+0

Предупреждение: MySQL расширение устаревшей, так как PHP 5.5.0, и будет удалены в будущем. Вместо этого [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) или [PDO_MySQL] (http://www.php.net/manual/en/ref.pdo- mysql.php). Не используйте mysql для разработки нового кода. – bansi

+0

Попробуйте использовать mysqli' isntead. – Samer

ответ

2

При попытке отладки кода, полезно использовать mysql_error()/mysqli_error($link) в вашем die(), а не общей строкой - die('Could not access table').

Кроме того, порядок запроса/ссылки в MySQL/MySQLi не то же самое

mysql_query является mysql_query(query,link), так что ваш код должен быть

$query = mysql_query($rawquery,$link) or die(mysql_error()); 

в то время как mysqli_query является mysqli_query(link, query), так что ваш код должен быть

$query = mysqli_query($link, $rawquery) or die(mysqli_error($link)); 
0

нужно проверить несколько вещей на это,

1 - NULL разрешено для имени поля ссылки?
2 - checkpal_message check - это varchar или текст и длина проверки также в базе данных?
3 - Вы можете попробовать удалить '' из всех значений.
4 - последняя проверка пуста разрешена?

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

Надежда эти вещи помогли вам

благодаря

Смежные вопросы