gpt4 book ai didi

php - Mysqli 抛出 "Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given"

转载 作者:行者123 更新时间:2023-11-29 20:11:49 31 4
gpt4 key购买 nike

我知道这段代码可以在我拥有的另一个网站上运行,但今天不起作用。我收到三个警告:

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php on line 33

Warning: mysqli_execute() expects parameter 1 to be mysqli_stmt, boolean given in /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php on line 34

Warning: mysqli_stmt_affected_rows() expects parameter 1 to be mysqli_stmt, boolean given in /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php on line 35

有人可以帮我解决这个问题吗?

如果这有帮助的话,我必须使用 htaccess 升级到 PHP5。

$connection = mysqli_connect($hostname, $username, $password, $dbname);

if (!$connection) {
die('Connect Error: ' . mysqli_connect_error());
}

$query = "INSERT INTO entries (name, dob, school, postcode, date) VALUES (?,?,?,?,?)";
$stmt1 = mysqli_prepare($connection, $query);
mysqli_stmt_bind_param($stmt1, 'sssss',$name,$dob,$school,$postcode,$date);
mysqli_execute($stmt1);
if(mysqli_stmt_affected_rows($stmt1) != 1)
die("issues");
mysqli_stmt_close($stmt1);
return "new";

编辑

经过一番调查后发现,prepare 语句不适用于 mysql4。我已经创建了一个新的 mysql5 数据库,但是当我尝试连接时出现此错误:

Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2005): Unknown MySQL server host 'localhost:/tmp/mysql5.sock' (1)

有人知道为什么会发生这种情况吗?

最佳答案

添加更多错误处理。
当连接失败时,mysqli_connect_error()可以告诉你更多细节。
当准备语句失败时mysqli_error()有有关该错误的更多信息。
执行语句失败时,询问mysqli_stmt_error() 。等等……
每当 mysqli 模块的函数/方法返回 false 来指示错误时,a)处理该错误并 b)决定继续是否有意义。例如。当连接失败时继续数据库操作是没有意义的。但是,当只有一次插入失败时,继续插入数据可能是有意义的(可能有意义,也可能没有)。

为了进行测试,您可以使用如下内容:

$connection = mysqli_connect(...);
if ( !$connection ) {
die( 'connect error: '.mysqli_connect_error() );
}

$query = "INSERT INTO entries (name, dob, school, postcode, date) VALUES (?,?,?,?,?)";
$stmt1 = mysqli_prepare($connection, $query);
if ( !$stmt1 ) {
die('mysqli error: '.mysqli_error($connection);
}
mysqli_stmt_bind_param($stmt1, 'sssss',$name,$dob,$school,$postcode,$date);
if ( !mysqli_execute($stmt1) ) {
die( 'stmt error: '.mysqli_stmt_error($stmt1) );
}
...

对于真实的生产环境,这种方法很费劲,很容易就死掉;-)

关于php - Mysqli 抛出 "Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056470/

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