用php查询数据库

时间:2013-12-21 22:30:52

标签: php mysql sql

我正在尝试使用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

我做错了什么?

2 个答案:

答案 0 :(得分:1)

mysql_fetch_array抓取...一个数组。

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

我认为将该列别名更好:

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

答案 1 :(得分:0)

我建议使用不同的查询方法,这样更安全(据我所知,不需要担心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']绑定到第一个qustion标记,s表示第一个问号将是一个字符串。让我们说我们必须变化:

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

然后我们将使用:

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

每个人都会重复一个问号,之后的每个值代表一个问号。
现在我们必须用。执行查询。

$statement->execute();

如果我们期望返回结果,那么我们必须使用

$statement->bind_result($userVotesText);

要将结果绑定到变量,如果我期望结果列,我需要放入第二个变量。
现在设置我们需要使用的那些变量

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

此方法比查询数据库的方法要好得多,称为Prepared Statement