請原諒我這個問題的愚蠢可能性,但我剛開始使用準備好的語句。我知道這個特定的查詢是有效的,因爲我用毫無準備的程序方法對它進行了測試。這裏是:準備好的聲明不會返回任何東西
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($content);
$stmt->fetch();
echo $content;
$stmt->close();
任何意見或正確的方向點非常感謝!
編輯1: 只是我嘗試排除故障時的進度更新。我意識到,由於我在節表中有一個id列作爲索引,因此我還需要將此綁定爲php.net上的上述語句(再次感謝Bill)。
這裏的新代碼:再次
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($id, $name, $content);
$stmt->fetch();
echo $content;
$stmt->close();
感謝所有誰可以提供建議。 (我很好奇:用這種方法使用OOP風格的準備語句很難調試,例如,是否有簡單的方法來簡單地查看實際使用的查詢?)
編輯2 : 嗨,謝謝你的測試,我非常感謝。我明白你被迫提出的問題,因爲我現在也在腦海中喋喋不休。我必須說它確實存在。
如果我做以下,就像一個快速和骯髒的例子:
$name = 'introduction';
@mysql_connect('host', 'user', 'pass');
@mysql_select_db('db');
$query = "SELECT name,content FROM sections WHERE name = '$name'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_object($result)) {
$content = $row->content;
echo $content;
}
我的數據出現,一切都很好。但是,如果我做到以下幾點:
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($name, $content);
$stmt->fetch();
echo $content;
$stmt->close();
我相信這是正確的(如果還有不清楚,叫喊當然),我什麼也沒得到。更重要的是,通過該代碼,當我進行html驗證(以防萬一)時,我得到一個內部服務器警告(500),我認爲這是sql代碼的問題。我只是堅果?
感謝您的持續幫助,非常感謝!
編輯3: 嗯,我覺得自己像一個白癡,但是,我已經解決了它,比爾,你的問題是正確的。我不知道我是如何設法輸入不正確的數據庫細節並且錯過它們很長時間的,但這正是發生的事情。
再次感謝您的耐心和樂於幫助。
請不要張貼答案作爲您的問題的更新 - 這就是編輯鏈接是爲 – 2009-06-19 23:39:47