在Heroku上使用php访问clearDB数据库时出现查询错误

在Heroku上使用php访问clearDB数据库时出现查询错误,php,mysql,heroku,cleardb,Php,Mysql,Heroku,Cleardb,我可以使用Mysql工作台很好地访问clearDB数据库 但当我在Heroku上使用php查询数据库时,它总是失败 这是我的代码: $url=parse_url(getenv("CLEARDB_DATABASE_URL")); $dbhost = $url["host"]; $dbuser = $url["user"]; $dbpass = $url["pass"]; $dbname = substr($url["path"],1); mysqli_connect($dbhost, $dbu

我可以使用Mysql工作台很好地访问clearDB数据库

但当我在Heroku上使用php查询数据库时,它总是失败

这是我的代码:

$url=parse_url(getenv("CLEARDB_DATABASE_URL"));

$dbhost = $url["host"];
$dbuser = $url["user"];
$dbpass = $url["pass"];
$dbname = substr($url["path"],1);

mysqli_connect($dbhost, $dbuser, $dbpass);

mysqli_select_db($dbname);

$sql = "SELECT * FROM `user_info` WHERE `user_account`='".$user_account."'";

$result = mysqli_query($sql) or die('MySQL query error');
user\u account是数据库中的一个表,$user\u account是客户端用户的一个输入变量

帮帮我
谢谢

您没有传递到
mysqli\u query()
的链接。您需要这样做,或者使用面向对象的样式并在连接上调用
query()

这里还有一个可能的SQL注入,因为
$user\u account
可能包含“
foo”或1或“
”,返回所有行(这只是一个简单的,不是很糟糕的情况),所以应该使用
mysqli\u real\u escape\u string()
来避免这种情况,或者更好的是,使用准备好的语句

最后,与其使用
或die()
,不如正确提取错误信息,甚至配置mysqli抛出异常

<?php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));

$server = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$db = substr($url["path"], 1);

$conn = new mysqli($server, $username, $password, $db);

$sql = "SELECT * FROM `user_info` WHERE `user_account`='".$conn->real_escape_string($user_account)."'";

if($result = $conn->query($sql)) {
    foreach($result as $row) {
        // ...
    }
} else {
    throw new Exception($conn->error);
}

用户帐户是表还是表中的字段
用户信息
?如果收到一条错误消息,请添加一条错误消息。user\u account是表user\u info中的一个字段。我刚刚收到了“MySQL查询错误”dzuelke解决了我的问题。谢谢你的帮助谢谢你解决了我的问题。