2017-03-31 162 views
0

我敢肯定,這是很瑣碎,但我就是不可阻擋的數字出來。我使用了在另一臺服務器上運行的代碼的一部分,而不是在我的新網站上運行。 在單獨的文件中,我得到這個:通過PHP連接到數據庫無法正常工作

<?php 
define('MYSQL_HOST','c236um.forpsi.com'); 
define('MYSQL_USER','abcd'); 
define('MYSQL_PASSWORD','xyz'); 
define('MYSQL_DB','abcd'); 

$db = mysqli_connect (MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or die("failed to connect"); 
mysqli_select_db(MYSQL_DB, $db) or die(mysqli_error($db)); 
mysqli_query("SET NAMES UTF8"); 
?> 

和的index.php我只是包括身體文件:

include "protected/_mysql.php"; 

隨着身體的isn't顯示該內容中,只有空白的白頁。如果我把一些文字作爲錯誤通知而不是變量,可以在

mysqli_select_db(MYSQL_DB, $db) or die(mysqli_error($db)); 

它會顯示錯誤文本。 我試圖把本地主機作爲MYSQL_HOST,但顯示第一個「失敗連接」錯誤。 我在做什麼錯?

+1

參數是倒退的。 **'mysqli_select_db($ link,'abcd')'** http://php.net/manual/en/mysqli.select-db.php。 (犯錯誤可見,使PHP錯誤報告。) – spencer7593

+0

哦地獄:))謝謝,我會考慮一次,我回來工作,讓知道這是否解決了問題...我希望它會:) –

+0

謝謝,這當然是這個愚蠢的錯誤。感謝您指出!我確信我會被困在這幾天。 –

回答

0

首先,我會看看PHP - > PDO
這是一個非常好的PHP附帶的庫,可以與mysql服務器(和其他人)交談,並將引擎抽象化一點。
通過PDO工作比通過mysqli imho更輕鬆。

下一個建議,將使用error_reporting(),如果你看到一個白色的頁面,你可能有一個錯誤在你的PHP代碼(在這種情況下,內部的PHP包括,或丟失的文件)。
你可以啓用錯誤報告,你可以看看Apache日誌文件,看看你的錯誤是否被記錄。

http://php.net/manual/de/book.pdo.php
http://php.net/manual/de/function.error-reporting.php

1

這樣的工作對我來說: 例(MySQLi的程序)

$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests"; 
$result = mysqli_query($conn, $sql); 

if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
     echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 

mysqli_close($conn); 
?> 

例(mysqli的面向對象)

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    echo "<table><tr><th>ID</th><th>Name</th></tr>"; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 

例(PDO)

<?php 
echo "<table style='border: solid 1px black;'>"; 
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>"; 

class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
     parent::__construct($it, self::LEAVES_ONLY); 
    } 

    function current() { 
     return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; 
    } 

    function beginChildren() { 
     echo "<tr>"; 
    } 

    function endChildren() { 
     echo "</tr>" . "\n"; 
    } 
} 

$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDBPDO"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); 
    $stmt->execute(); 

    // set the resulting array to associative 
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
     echo $v; 
    } 
} 
catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
echo "</table>"; 
?> 

這些例子是從W3Schools的。

https://www.w3schools.com