我正在尝试使用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
我做错了什么?
答案 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_connect
和mysqli_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