自从Webhost从PHP5-> PHP7迁移以来,我有许多需要修改的带有MySQL查询的简单PHP文件。我几乎是一位PHP / MySQL的初学者,试图把我的头放在从MySQL到MySQLi的变化上。
我已经开始阅读PHP文档re:MySQLi,但此刻被mysqli_query困住了。
这是到目前为止我尝试过的MySQLi代码:
<?php
$con = mysqli_connect("localhost”, “my_user","my_password,"my_db”);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$result = mysqli_query("SELECT image, caption
FROM tbllinkcat, tblimages
WHERE tbllinkcat.catid = tblimages.catid
AND tbllinkcat.catid=1;");
while($row = mysql_fetch_array($result))
{
echo $row['image'];
echo "<br />";
echo $row['caption'];
echo "<br />";
}
mysql_close($con);
?>
我非常确定mysqli_connect代码可以正常工作,但是我在mysqli_query代码上遇到错误(错误:警告:mysqli_query()至少需要2个参数。
我很确定一旦纠正mysqli_query我也会在mysql_fetch_array上得到错误。因此,现在我想知道是否有人可以给我展示一个mysqli_query的示例,该示例适用于上面我的代码中的特定SQL语句?我将继续阅读MySQli和mysqli_query的PHP文档。谢谢。
答案 0 :(得分:0)
<?php
$con = mysqli_connect("localhost”,“my_user","my_password”,"my_db”);
//establish database connection
if (!$con)
{
die('Could not connect:'.mysqli_error());
}
$result = mysqli_query($con,"SELECT image,caption FROM tbllinkcat, tblimages WHERE tbllinkcat.catid = tblimages.catid AND tbllinkcat.catid=1");
//perform sql select query with database connection
while($row = mysqli_fetch_array($result))
{
echo $row['image'];
echo "<br />";
echo $row['caption'];
echo "<br />";
}
mysqli_close($con);
?>
有关更多信息,请阅读:- https://www.php.net/manual/en/mysqli.query.php
答案 1 :(得分:0)
mysqli_query
需要两个参数:
这将导致以下结果:
$result = mysqli_query($con, "SELECT image, caption FROM tbllinkcat, tblimages WHERE tbllinkcat.catid = tblimages.catid AND tbllinkcat.catid=1;");
您在连接函数中也有一些看起来很奇怪的引号,请更正它们:
$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");
要获取数组,请使用:
while($row = mysqli_fetch_assoc($result))
{
echo $row['image'];
echo "<br />";
echo $row['caption'];
echo "<br />";
}
最后,关闭连接:
mysqli_close($con);
注意:众所周知,在通过用户输入使用查询时,请使用prepared statements和bind_param。这将防止SQL注入攻击。我将在下面显示和示例。
$stmt = $db->prepare("SELECT * FROM users WHERE username = ?");
$username = $_POST['username'];
$stmt->bind_param('s', $username);
$result = $stmt->execute();
答案 2 :(得分:-2)
我看到您没有花时间阅读mysqli文档https://php.net/manual/en/book.mysqli.php
您必须将连接作为参数传递给mysqli_query
mysqli_query($con,"SELECT image, ...");
还将 mysql_fetch_array 更改为 mysqli_fetch_array