This has been driving me crazy, the issue is I cannot work out How i can get and set the cached data to be displayed within my view.
public function get_something($id, $account_name)
{
$sql = "SELECT one,two,three FROM table WHERE id = ? and account_name = ? ";
$key = md5("SELECT one,two,three FROM table WHERE id = $id and account_name = $account_name ");
$get_result = $this->Core->Core->Memcache->get($key);
if($get_result)
{
// How would I set the Data
}
else
{
$stmt = $this->Core->Database->prepare($sql);
$stmt->bind_param("is", $id, $account_name);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($one, $two, $three);
$stmt->fetch();
//Below is how i set the data
$this->Core->Template->set_data('one', $one);
//Set the Memcache
$this->Core->Memcache->set($key, $stmt, TRUE, 20);
}
So my question is how can I get and set the data from a prepared statement fetch within memcache?
Memcache is a key/value storage system with both the key and the value needing to be serialized. From the php.net page:
It appears your sql statement is looking for three values in a single row. I’m no expert on mysqli, but this is kind of what you want to do:
A few notes, #1 the answer to your question is simple, just return
$get_result. It should be an array with three values. #2 I’m not familiar with this line, nor what it does. Is this how your “return” the values to your controller? If so, you’ll want to mimick that line where I put thereturninside theif#3 This is your problem. You can’t save the$stmtvariable in memcache, it’s a mysqli object, not the data you want. You need to build an array and then save that array. And that should do it for you.There are other nuances to do, you can loop on the returned values. You should check for mysql not returning anything. But this is the basic starting point to get this going.
Let me know if this works for you.