2013-06-28 49 views
-1

我希望在web服務器上使用perl腳本根據來自端口的信息創建一些插入語句。我有基於PHP的網站與db溝通,我想了解如何通過perl連接到相同的PHP數據庫連接,並在perl腳本函數中記錄我的插入語句。 (對不起,我是perl的新手,我沒有創建perl腳本。)將連接字符串從PHP傳遞到perl腳本

+0

爲了給出更準確的答案,您需要告訴我們更多。您的Perl腳本是否已經創建了SQL查詢?你有數據嗎?你想知道如何將數據發送到你的數據庫?你是否按照我們的假設使用了mysql,或者其他什麼?請給我們更多的細節。 – simbabque

+0

感謝您對我的問題感興趣,不是沒有,我的程序給了我想在網上使用,但不幸的是它的Perl書面。 – acidstrike

+0

你能解決這個問題嗎?如果其中一個答案對您有幫助,請點擊答案左側的勾號接受答案,以便其他人可以看到它解決了問題。查看[faq#howtoask]瞭解更多信息。 – simbabque

回答

0

連接到MySQL w/Perl非常簡單。只要使用與您使用w/PHP相同的細節,前提是兩個腳本都在同一臺服務器上(或者您的DBMS接受外部連接)。

use DBI; 
$dbh = DBI->connect("dbi:mysql:databasename:localhost", 'username', 'password'); 
2

您可以使用具有相同憑據但不相同連接的相同數據庫。

如果您不知道憑據,請進入您的php腳本,並尋找mysql_connect命令或更現代的東西來創建數據庫連接。恐怕我不熟悉這一點,所以我無法幫助你。取出服務器名稱,端口,數據庫名稱和用戶名/密碼,並在Perl程序中使用DBI

use strict; 
use warnings; 
use DBI; 

my $dbh = DBI->connect('dbi:mysql:db:hostname', $username, $password); 

您現在可以使用$dbh數據庫句柄將數據插入數據庫,例如,像這樣:

my $sth = $dbh->prepare('INSERT INTO my_table (foo, bar) VALUES (?, ?)'); 
$sth->execute('val1', 'val2'); 

# or more fancy, if you have an array ref with more array refs: 

foreach my $line (@$data) { 
    $sth->execute(@$line); 
} 
+0

我看到你是一個Perl人,所以我會削減你一些鬆懈:p不推薦mysql_ *函數,因爲它們已被棄用,不支持準備好的語句等。他應該使用PDO或MySQLi。 –

+2

我不推薦他們,我只是假裝他的PHP可能有他們,所以這將是尋找他的數據庫證書的地方。我上次使用這些東西是很久以前的事了。如果有OOp模塊可用,這些可能很好。 ;-) – simbabque

+0

@WayneWhitty:好? :) – simbabque