Ben sorunu prepare fonksiyonu ile belli olduğunu düşünüyorum ..
Fonksiyonu muhtemelen dava $ deyim YANLIŞ olması ve dolayısıyla bir üyesi olarak bind_param yöntemi olmazdı ki, başarısız oluyor.
From the php mysqli manual:
mysqli_prepare() returns a statement object or FALSE if an error occurred.
Sorgunuzu kontrol edin! Belki de deyim ile bir sorun var. Ve ayrıca hazırlamak işlevi tarafından döndürülen bir nesne olduğunu düşünüyorum ne herhangi bir üye işlevi yürütmek için denemeden önce YANLIŞ kontrol edin.
if($stmt === FALSE)
die("Prepare failed... ");// Handle Error Here
// Normal flow resumes here
$stmt->bind_param("i","");
EDIT
Ben deyim çünkü alt sorgunun erroring olabilir şüpheli olur:
SELECT d.date
FROM cali_events e
LEFT JOIN cali_dates d
ON e.event_id = d.event_id
WHERE YEARWEEK(d.date) = YEARWEEK(CURRENT_DATE())
AND c.category_id = ?
GROUP BY DAY(d.date)
Bunun yerine, neden bu gibi sorgu yazmak yok:
public function countDaysWithoutEvents()
{
$count = FALSE;
$sql = "SELECT COUNT(d.date) ";
$sql .= " FROM cali_events e ";
$sql .= " LEFT JOIN cali_dates d ON e.event_id = d.event_id ";
$sql .= " WHERE YEARWEEK(d.date) = YEARWEEK(CURRENT_DATE()) ";
$sql .= " AND c.category_id = ? ";
$sql .= " GROUP BY DAY(d.date) ";
$stmt = $this->link->prepare($sql);
if($stmt !== FALSE)
{
$stmt->bind_param('i', $this->locationID);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch(); // I think you need to do a fetch
// here to get the result data..
$stmt->close();
}else // Or, provide your own error
die("Error preparing Statement"); // handling here
return (7 - $count);
}
P.S. I think you also had a missing a call to fetch de .. em> (yukarıdaki örneğe bakın)