我知道有一些话题正在讨论这个但不幸的是我无法让它为我工作。我可能会监督一些事情。
我收到了以下代码:
function get_kurs($block){
open_connection();
global $conn;
$stmt = $conn->prepare("SELECT FachKürzel FROM `Fach` LEFT JOIN `Stunde` ON Fach.Fachname = Stunde.Fachname WHERE Stunde.Stunde = ?");
$stmt->bind_param("s", $block);
$stmt->execute();
$stmt->bind_result($kuerzel);
$stmt->fetch();
print $kuerzel;
$stmt->close();
$conn->close();
}
当我尝试执行它时,它会给我描述的错误。我认为它可能与查询有关,但在同一个数据库中在HeidiSQL中运行完全相同的查询会给我我想要的结果。
连接正常,因为我可以通过简单的查询在我的网站上显示结果。
有什么想法吗? 提前谢谢!
编辑:以防万一重要:
function open_connection(){
$servername = "XXX.XXX.XXX.XXX";
$username = "username";
$password = "password";
$dbname = "XXXX";
global $conn;
$conn = new MySQLi($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
}
答案 0 :(得分:0)
prepare函数可以返回语句对象或false。如果您得到错误,则表示存在错误。
尝试使用$conn->errno
或$conn->error
打印错误,以便更好地了解您的问题。
您可以将代码更改为以下内容:
function get_kurs($block){
open_connection();
global $conn;
if($stmt = $conn->prepare("SELECT FachKürzel FROM `Fach` LEFT JOIN `Stunde` ON Fach.Fachname = Stunde.Fachname WHERE Stunde.Stunde = ?")){
$stmt->bind_param("s", $block);
$stmt->execute();
$stmt->bind_result($kuerzel);
$stmt->fetch();
}else{
printf('errno: %d, error: %s', $conn->errno, $conn->error);
die;
}
print $kuerzel;
$stmt->close();
$conn->close();
}