2017-02-22 80 views
-2

我想從我的數據庫中得到一個問題的答案。我只想從數據庫中取出一件東西,而不是一行。我認爲這將工作,但它提出了這個:資源ID#4可以解釋我缺少的東西。迴應一些MySQL數據庫

謝謝:)

<?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    mysql_select_db('lotto'); 
    $sql = 'SELECT id, vraag, AntwA, AntwB, AntwC, AntwD FROM vraag1'; 
    $test = mysql_query($sql); 
    echo $test; 

?> 
+2

停止使用'mysql_ *'功能。另外你所缺少的是'$ test'是一個查詢結果集,而不是一個可以被回顯的字符串。看看http://stackoverflow.com/documentation/php/2784/php-mysqli#t=201702220849069806914 – apokryfos

回答

3

正如所說至少10000倍無處不在的互聯網,從不使用MySQL_! (如果您正在嘗試使用教程,通過互聯網學習新的東西,不要用舊的)

我建議使用PDO與準備正確使用時,它是在PHP現代API和很多更安全聲明!但是你也可以使用更類似於MYSQL的MYSQLI!

你必須從返回的數組導出數據:

使用PDO:

$db = new PDO ("mysql:host=".$hostname.";dbname=".$dbname, $username, $password); 

$query = $db -> prepare ("SELECT * FROM vraag1"); 

    $query -> execute (array()); 

    $rows = $query -> fetchAll (PDO::FETCH_ASSOC); 

    foreach ($rows as $row) 
    { 
     echo $id = $row["id"]; 
        echo $vraag = $row["vraag "]; 
        echo $AntwA = $row["AntwA "]; 
        echo $AntwB = $row["AntwB "]; 
        echo $AntwC = $row["AntwC "]; 
        echo $AntwD = $row["AntwD "]; 
    } 

使用的mysqli:

$db = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 

$query = "SELECT * FROM vraag1"; 
$rows = mysqli_query($db, $query); 

while($row = mysqli_fetch_assoc($rows)) 
{ 
    echo $row["id"]; 
    echo $row["vraag"]; 
    echo $row["AntwA"]; 
    echo $row["AntwB"]; 
    echo $row["AntwC"]; 
    echo $row["AntwD"]; 
} 
+0

他爲什麼要使用PDO? –

+0

@MasivuyeCokile他爲什麼不應該?! – Soheyl

+2

不要聽到我的錯誤,我不是說他不應該使用PDO,但OP看起來像使用mysql的舒適,所以我們應該引導他使用正確的apis。記住mysqli也支持準備好的語句。 –

-2

使用的mysqli爲mysql

<?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 

    $conn = mysqli_connect($dbhost, $dbuser, $dbpass); 

    mysqli_select_db('lotto'); 
    $sql = 'SELECT id, vraag, AntwA, AntwB, AntwC, AntwD FROM vraag1'; 
    $test = mysqli_query($sql); 
    echo $test; 

?> 
+0

警告:mysqli_select_db()期望恰好2個參數,1在C:\ xampp \ htdocs \ Informatica \ SE中給出。 php on line 15 警告:mysqli_query()需要至少2個參數,第1行給出的C:\ xampp \ htdocs \ Informatica \ SE.php – Jelles

+0

您的代碼仍然無法修復原始版本的問題,引入新的。 – GordonM

+0

'mysqli'不是'mysql'的克隆 –

-1

您需要添加類似以下內容:

while($row = mysql_fetch_array($result)){ 
    echo $row['id']; 
    echo $row['vraag']; 
    echo $row['AntwA']; 
    echo $row['AntwB']; 
    echo $row['AntwC']; 
    echo $row['AntwD']; 
} 
+0

首先它是mysql_fetch_assoc,其次mysql_ *函數在PHP 5中被棄用,並且在PHP 7中完全丟失,它沒有任何好處來鼓勵人們繼續使用它們。 – GordonM

+0

我正在用他現在的代碼風格,因爲他想要一個答案,而不是重新寫他的整個代碼!而不是嘲弄爲什麼不添加答案 – Jamie

+0

指出你的回答需要改進的方式不是拖延。如果你認爲它是,那麼我建議你開發一個更厚的皮膚。 – GordonM

0

對於選擇功能的mysql_query()返回成功資源,錯誤時爲FALSE。 so your assignment statement

$test = mysql_query($sql); 

將資源分配給$ test。

,如果你想在資源中的數據,你可以做

while($row= mysql_fetch_assoc($test)): 
    print_r($row); 
endwhile; 

還可以訪問$行[「列名」]

如果你想只返回一行,你可以這樣做限制查詢

$sql = 'SELECT id, vraag, AntwA, AntwB, AntwC, AntwD FROM vraag1 limit 1'; 
+0

不太確定爲什麼這是downvoted,它在技術上是正確的(雖然你也不應該鼓勵人們繼續使用過時的mysql_ *功能) – GordonM

+1

@GordonM可能是downvoted,因爲他鼓勵人們使用折舊功能? –

+0

我會從現在開始注意 – Bharat

2

首先,你正在使用的折舊全部mysql功能並不再支持。你應該使用mysqli或者pdo代替準備好的語句。

<?php 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = ""; 
$dbname = "lotto"; 

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

$sql = "SELECT id, vraag, AntwA, AntwB, AntwC, AntwD FROM vraag1"; 
$test = mysqli_query($conn, $sql); 

if (mysqli_num_rows($test) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($test)) { 

     echo "ID : ".$row['id']."<br>"; 
     echo "vraag :".$row['vraag']."<br>"; 
     echo "AntwA :".$row['AntwA']."<br>"; 
     echo "AntwB :".$row['AntwB']."<br>"; 
     echo "AntwC :".$row['AntwC']."<br>"; 
     echo "AntwD :".$row['AntwD']."<br>"; 
    } 
} else { 
    echo "no results found"; 
} 

mysqli_close($conn); 
?>