2017-03-31 4 views
0

이것이 매우 사소한 것임을 확신하지만, 나는 그 사실을 알 수 없습니다. 다른 서버에서 작동하지만 내 새 웹에서는 작동하지 않는 코드의 일부를 사용했습니다.PHP를 통한 DB 연결이 작동하지 않음

<?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"; 

를 단지가 별도의 파일에서 나는이있어 빈 흰색 페이지입니다. 변수 대신 오류 알림으로 텍스트를 넣으면

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

이 표시됩니다. MYSQL_HOST로 localhost를 넣으려고했으나 첫 번째 "연결하지 못했습니다"오류가 표시됩니다. 내가 뭘 잘못하고 있니?

+1

인수가 거꾸로 있습니다. ** mysqli_select_db ($ link, 'abcd')'** http://php.net/manual/en/mysqli.select-db.php. 오류를 볼 수있게하려면 PHP 오류보고를 사용하십시오. – spencer7593

+0

Oh hell :)) 고마워요. 한 번 Im의 작업으로 돌아가서 문제가 해결되었는지 알려주세요. :) 기대합니다. –

+0

감사합니다. , 물론이 어리석은 실수였습니다. 그것을 지적 주셔서 감사합니다! 나는 확실히 이것에 며칠 동안 붙어있을 것이다. –

답변

0

우선 PHP로 보겠습니다. -> PDO
MySQL 서버 (및 기타)와 대화 할 수있는 PHP와 함께 제공되는 매우 멋진 라이브러리이며 엔진을 약간 추상화합니다.
mysqli imho를 사용하는 것보다 PDO를 통해 작업하는 것이 훨씬 더 편안합니다.

다음 제안 사항은 error_reporting()입니다. 흰색 페이지가 있으면 PHP 코드 (이 경우에는 PHP 포함 또는 누락 된 파일)에 오류가있을 가능성이 큽니다.
오류보고를 사용하도록 설정할 수 있으며 아파치 로그 파일을보고 오류가 기록되었는지 확인할 수 있습니다.
http://php.net/manual/de/function.error-reporting.php

1

http://php.net/manual/de/book.pdo.php이 방법은 나를 위해 작동 :

<?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)

$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) (MySQLi 절차)

<?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

관련 문제