我都要讓我的生活更容易一點像在這個帖子:Foreaching PDO bindValue/BindParam
PDO::bindParam in a foreach loop, all values are being set as the same?
其他幾人......
我試過幾個變種把我的代碼工作(見消息),但沒有結果,我要在我的類方法:
public function getMessages($locationId, $name) {
if(!empty($name)) {
$query = 'SELECT * FROM (SELECT * FROM sms WHERE location_id=:locationId ORDER BY id DESC LIMIT 5) AS SOURCE ORDER BY id ASC';
$parameters = array(':locationId' => $locationId);
$row = $this->returnDataObject($query, $parameters);
while ($row) {
$this->fetchData($row, $biggestId, $name);
}
$this->updateSessionKey($locationId, $name);
}
}
另:
public function returnDataObject($query, $parameters) {
var_dump($query);
var_dump($parameters);
$dataObject = $this->dbh->prepare($query);
foreach ($parameters as $key => &$value) {
$dataObject->bindParam($key, $value);
}
$dataObject->execute();
$row = $dataObject->fetch(PDO::FETCH_OBJ);
return $row;
}
我嘗試:
foreach ($parameters as $key => &$value) {
and:
foreach ($parameters as $key => $value) {
我嘗試:
$dataObject->bindParam($key, $value);
and:
$dataObject->bindValue($key, $value);
我還試圖在方法的getMessages死( '我在的getMessages方法'); 但我不能那麼遠...
我應該做什麼不同,以獲得此代碼的工作?
我感謝任何幫助!
編輯:
我的壞與biggestId但在宣佈biggestId:
$biggestId = $this->getBiggestId($locationId);
但固定沒有解決整個問題。這第一種方法的工作原理perfictly如果是:
public function getMessages($locationId, $name) {
if(!empty($name)) {
$biggestId = $this->getBiggestId($locationId);
$messages = $this->dbh->prepare('SELECT * FROM (SELECT * FROM sms WHERE location_id=:locationId ORDER BY id DESC LIMIT 5) AS SOURCE ORDER BY id ASC');
$messages->bindParam(':locationId', $locationId);
$messages->execute();
while ($row = $messages->fetch(PDO::FETCH_OBJ)) {
$this->fetchData($row, $biggestId, $name);
}
$_SESSION[$name] = $biggestId;
}
}
,但我想使用的方法,所以我不必bindParam/BindValue manualy,returnDataObject方法的功能將讓我的生活更輕鬆...
哪裏biggestId從何而來?不應該是locationId?你也應該使用fetchAll,因爲你需要數組 – meda
我修復了這個問題,但這不是大問題的原因。方法returnDataObject仍然不起作用...我的代碼完美工作,而不使用這種方法,但方法會讓我的生活更輕鬆... – user2812532
fetchData導致沒有問題,因爲它沒有使用returnDataObject它的工作,因爲它... – user2812532