簡體   English   中英

用PHP查詢數據庫

[英]Querying database with php

我試圖使用php查詢數據庫,然后顯示查詢結果。 對於此示例,我只想要MySQL數據庫中的元素數。

我的代碼是:

<?php
    print("This is just a test");
    print("This is another test");
    // Create connection
    $con=mysqli_connect("mysql.netsons.com","****","****","****");

    // Check connection
    if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    print("A third test");

    $result = mysqli_query($con, "SELECT COUNT(*) FROM MyGames");
    echo $result;
    echo mysqli_fetch_array($result);
    print("A forth test");
    mysqli_close($con);
?>

結果如下:

This is just a testThis is another testA third test

我究竟做錯了什么?

mysql_fetch_array獲取...一個數組。

$row = mysqli_fetch_array($result);
echo $row["COUNT(*)"];

我認為也最好為該列起別名:

SELECT COUNT(*) AS count FROM MyGames
...
echo $row['count'];

我建議使用一種更安全的查詢方法(據我所知,無需擔心SQL注入),這樣可以節省大量的時間和空間。

首先,您需要創建一個mysqli對象

$stateConnect = new mysqli("localhost", "root", "PASS", "DBTable");

這樣做與mysqli_connectmysqli_select_db相同
然后您要定義您的SQL查詢

$sql = "SELECT `userVotes` FROM `users` WHERE `userEmail`=?";

接下來,您要創建一個稱為語句的變量,並在其中“附加” SQL

$statement = $stateConnect->prepare($sql);

請注意,在我的SQL中,我沒有直接輸入userEmail所需的值,而是輸入了“?”。 它充當我們稍后定義的變量(但是始終為'?'
要定義此變量,我們需要使用。

$statement->bind_param('s', $SESSION['email']);

這會將$SESSION['email']綁定到第一個問號, s表示第一個問號將是一個字符串。 可以說我們不得不變脆:

$sql = "SELECT `userVotes` FROM `users` WHERE `userEmail`=? AND `userName`=?";

然后,我們將使用:

$statement->bind_param('ss', $SESSION['email'], "USERNAME");

每個s代表一個問號,此后的每個值代表一個問號。
現在我們必須執行查詢。

$statement->execute();

如果我們期望返回結果,則必須使用

$statement->bind_result($userVotesText);

要將結果綁定到變量,如果我希望將結果綁定到列,則需要放入第二個變量。
現在設置這些變量,我們需要使用

if($statement->fetch()){
    $userVotesResult = userVotesText;
}

此方法比其他查詢數據庫要好得多,稱為“ 預備語句”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM