2013-12-22 49 views
0

我一直在解決這個問題好幾天了。我使用PHP腳本將數據輸入到MySQL數據庫,我得到一個空白頁面,或者說它做到了,但MySQL中沒有任何更改。我嘗試從較舊的程序進行更新,安裝所有32位,並安裝所有64位軟件。現在我已經更新了一次並重做了兩次,我確定我在Windows中遇到了問題,但我不知道要在哪裏搜索。我會告訴你一個我正在使用的腳本,但我知道這是一個正在運行的腳本,因爲我用它來測試其他服務器。但找到問題的解決方案的一個主要障礙是,每當我找到有人遇到我的問題時,主要認爲腳本是問題,我沒有錯誤代碼,這個腳本甚至說「成功!」。PHP不與MySQL溝通

系統: Windows 7家庭高級版SP1 64位 的Apache 2.4.7 VC11 64 PHP 5.5.7 VC11 64 MySQL服務器5.6.12

腳本:

<?php // mysql-pdo-test.php 
try { 
    $user = "[censored]"; $pass = "[censored]"; 

    echo "-->connect and select database\n"; 
    $dbh = new PDO('mysql:host=projectedin.local;dbname=test', $user, $pass); 

    # activate exception generation 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    echo "<br />-->create table:\n"; 
    $dbh->exec("CREATE TABLE IF NOT EXISTS test_tab (thing VARCHAR(10))"); 

    echo "<br />-->insert into table:\n"; 
    $dbh->exec("INSERT INTO test_tab VALUES ('book'),('pencil')"); 

    echo "<br />-->select from table:\n"; 
    $res = $dbh->query("SELECT thing FROM test_tab"); 
    foreach ($res as $row) { 
    echo $row['thing'], " "; 
    } 

    echo "<br />-->drop table:\n"; 
    $dbh->exec("DROP TABLE test_tab"); 
    echo "<br />SUCCESS!"; 

    // disconnect 
    $dbh = null; 
} 
catch (PDOException $e) { 
    die("<h4>Error: " . $e->getMessage() . "</h4>"); 
} 
?> 
+0

嘗試'127.0.0.1'作爲您的MySQL服務器的地址。 Windows有時候對本地尋址很有趣。 – Machavity

+1

您正在連接到'projectedin.local',這意味着MySQL正在偵聽TCP套接字而不是命名管道(就像您連接到'localhost'時那樣)。你能從MySQL命令行連接到'mysql -h projectedin.local test'嗎? –

+0

所以你從'foreach'循環中看到* SUCCESS!*但不是* book *和* pencil *?您是否啓用了完整的錯誤報告(例如'php.ini'中的'display_errors = On'和'error_reporting = E_ALL')? – Phil

回答

-3

此:

$dbh->exec("INSERT INTO test_tab VALUES ('book'),('pencil')"); 

無效。應該是:

$dbh->exec("INSERT INTO test_tab VALUES ('book', 'pencil')"); 

不知道這是否會導致您的問題,但它肯定沒有幫助。

+1

他的表只有1列,而http://dev.mysql.com/doc/refman/5.6/en/insert.html「使用VALUES語法的INSERT語句可以插入多行。爲此,請包含多個列表列值,每個值都括在括號內,並用逗號分隔「 –