可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
我知道这段代码适用于我已经拥有的另一个网站,但今天它还没有播放。 我收到三个警告:
警告:mysqli_stmt_bind_param()要求参数1为mysqli_stmt,布尔值在第33行/homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php中给出< / p>
警告:mysqli_execute()要求参数1为mysqli_stmt,布尔值在第34行/homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php中给出< / p>
警告:mysqli_stmt_affected_rows()要求参数1为mysqli_stmt,布尔值在第35行/homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php中给出< / p>
有人可以帮我解决这个问题吗?
如果有帮助,我必须使用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";
修改
经过一番调查后发现,准备声明不与mysql4打球。我创建了一个新的mysql5数据库,但是当我尝试连接时,我现在收到此错误:
警告:mysqli_connect()[function.mysqli-connect] :( HY000 / 2005):未知的MySQL服务器主机'localhost:/tmp/mysql5.sock'(1)
有没有人知道为什么会这样?
答案 0 :(得分:8)
添加更多错误处理 当连接失败时,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) );
}
...
对于真实的生产环境,这种方法很健谈,很容易死; - )
答案 1 :(得分:3)
问题来自mysqli_prepare()
,在您的情况下会返回false
,因此会出现“布尔给定”错误。由于您的查询似乎没问题,错误必须在$connection
中。您确定连接是否正常并已定义?
连接应该定义为:
$connection = mysqli_connect("localhost", "my_user", "my_password", "world");
如果正确定义了连接,您可以使用echo mysqli_connect_error()
查看是否出现了问题。您说代码在另一个站点上运行,所以您可能忘记更改凭据或主机?