gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:33:17 25 4
gpt4 key购买 nike

我可以使用 Mysql Workbench 很好地访问 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_account是数据库中的一张表,$user_account是客户端用户的输入变量

帮帮我谢谢

最佳答案

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

那里也可能存在 SQL 注入(inject),因为 $user_account 可能包含“foo' OR 1 OR '”,返回所有行(这只是一个简单的,不是很糟糕的情况),所以你应该使用 mysqli_real_escape_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);
}

关于php - 在 Heroku 上使用 php 访问 clearDB 数据库时出现查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27290530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com