好的。我搜索并搜索了一个答案,但我找不到它。
我正在编写一个简单的PHP脚本,它获取url信息并通过MySQL查询运行它以查看结果是否出现。我尝试回显持有查询的变量,但没有任何显示。我知道必须有结果,因为如果我在MySQL中手动输入查询,它会显示我想要的结果。
$result = mysqli_query("SELECT * FROM pages WHERE pageq = '" . $_GET['page'] . "'" );
$data = mysqli_fetch_assoc($result);
echo ("You have just entered in " . $data['id'] . "!!! YAY");
我试图回应$ result和$ data。但没有任何显示。我是编程的新手,这是我的第一篇StackOverflow帖子,如果我犯了很大的错误,请原谅我。
答案 0 :(得分:1)
问题是您没有在查询中设置连接。 mysqli_query()
需要两个参数。
首先建立连接:
$conn = mysqli_connect("localhost", "user", "password", "dbname");
现在执行查询:
$result = mysqli_query($conn,"SELECT * FROM pages WHERE pageq = '" . $_GET['page'] . "'" );
注意:您的代码非常容易受到MySQL注入攻击。使用MySQLi或PDO 准备好的陈述。
此外,您应该使用mysqli_errno()
来查找您的查询错误。
编辑: 也这样做:
while($row=mysqli_fetch_assoc($result)){
//do the result output.
}
答案 1 :(得分:1)
实际上mysqli_query()需要两个参数...请查看以下示例示例..
<?php
$conn = mysqli_connect('localhost','root','','your_test_db');
$_GET['page'] = 1;
$result = mysqli_query($conn,"SELECT * FROM your_table WHERE id = '" . $_GET['page'] . "'");
$data = mysqli_fetch_assoc($result);
echo ("You have just entered in " . $data['id'] . "!!! YAY");
?>
正如你所说,你刚刚处于学习阶段,可以编写这类查询只是为了自己学习,但不要对这些查询进行编码,因为这些查询容易受到攻击,所以我建议你使用准备查询或 PDO ...
也绝不在查询中使用SELECT *
,这是一种不好的做法,只处理您需要的字段。
此外,您始终可以检查数据库是否已连接。这样你就有了更好的主意。
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
你还没有提到你是否遵循OOP结构..所以我建议你检查 error_reporting()并在同一页面上连接数据库来检查周围的事情..
此外,您可以检查现在WHERE
是否没有"SELECT * FROM your_table
条件,以确定您是否至少获得了所有记录。