php - MySQL 行未找到但确实存在

标签 php mysql database mysqli

我正在使用 PHP 尝试从 MySQL 数据库的表中选择一行。我已在 phpMyAdmin4 中手动运行查询,它返回了预期结果。但是,当我在 PHP 中运行完全相同的查询时,它什么也没有返回。

$query = "SELECT * FROM characters WHERE username=".$username." and charactername=".$characterName."";
if($result = $mysqli->query($query))
{
        while($row = $result->fetch_row())
        {
            echo $row[0];    
        }
        $result->close();
}
else
        echo "No results for username ".$username." for character ".$characterName.".";

当我在浏览器中对此进行测试时,我得到了“没有结果...”的回显。我做错了什么吗?

这不是一个重复的问题,因为我不是问何时使用某些引号和反引号。我正在寻求帮助以了解为什么我的查询不起作用。引用只是碰巧不正确,但即使更正,问题也没有解决。下面是编辑后的代码以及其余部分。由于显而易见的原因,我删除了我的服务器信息。

<?PHP
$username = $_GET['username'];
$characterName = $_GET['characterName'];

$mysqli = new mysqli("REDACTED","REDACTED","REDACTED");

if(mysqli_connect_errno())
{
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
}

$query = "SELECT * FROM `characters` WHERE `username`='".$username."' and `charactername`='".$characterName."'";

if($result = $mysqli->query($query))
{
        while($row = $result->fetch_row())
        {
            echo $row[0];    
        }

        $result->close();
}
else
        echo "No results for username ".$username." for character ".$characterName.".";

$mysqli->close();
?>

最佳答案

失败:$mysqli = new mysqli("REDACTED","REDACTED","REDACTED");因为您没有选择数据库。

使用 MySQLi API 连接到数据库需要 4 个参数:

如果不需要您的密码,您仍然需要一个(空)参数。

即:$mysqli = new mysqli("host","user", "", "db");

另外,如前所述。

您当前的代码已开放给 SQL injection 。使用mysqli_* with prepared statements ,或PDOprepared statements .

<小时/>

脚注:

original post 中所述。字符串需要在值中加引号。

关于php - MySQL 行未找到但确实存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635439/

相关文章:

javascript - 刷新父级后,JS window.close 弹出窗口不起作用

php - CakePHP Controller

javascript - 如何从 JS 将预览文件上传到 PHP

php - 没有从查询中获取数据。 PDO

mysql - "If value exists in table"- 有这样的东西吗?

android - 查询文本文件到数据库中

javascript - Ajax 只运行一次

mysql - 无法让 load_file() 在 mysql 中工作

php - 使用面向对象的 php 在 mysqli 函数中更新查询

php - mysql_connect() : Access denied for user 'root'