2013-08-17 52 views
0

很奇怪。我看不出這裏有什麼問題。與MySQL數據庫的連接已經完成,但不會從PHP進行INSERT。如果我在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 

我期待無效的消息,我只是希望它被插入到數據庫中。

問題是查詢的格式,還是數據庫或其他問題?

其他信息(如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

試圖調試代碼時,在die()中使用mysql_error()/mysqli_error($link)而非普通字符串 - die('Could not access table')會很有幫助。

此外,在MySQL查詢/鏈接的順序/ mysqli的是不一樣的

mysql_querymysql_query(query,link),所以你的代碼應該是

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

mysqli_querymysqli_query(link, query),所以你的代碼應該是

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

需要檢查這幾件事情,

1 - 允許用於引用字段名稱的NULL?
2 - paypal_message檢查是否在數據庫中使用varchar或text並檢查長度?
3 - 你可以嘗試從每個值中刪除''。
4 - 最後一次檢查是否允許空?

您可以嘗試使用一些示例值而不是空值。檢查該查詢是否有效,以便您可以接近解決方案。

希望這些東西幫你

感謝

相關問題