2011-02-07 8 views
5

UPDATEプリペアド・ステートメントに問題があり、どこにでも見られ、ここで質問を閲覧しましたが、構文が正しいと思われます。PHPのUPDATEプリペイドド・ステートメントで問題が発生しました

$update_page = $db->stmt_init(); 
$update_page = $db->prepare (" 
UPDATE pages 
SET page_title = ?, meta_description = ?, meta_keywords = ?, $content = ? 
WHERE page_uri = ? 
"); 
$update_page->bind_param('sssss', $page_title, $meta_description, $meta_keywords, $content, $page_uri); 
$update_page->execute(); 

これは

Fatal error: Call to a member function bind_param() on a non-object

は4行(最終行以上の1)を参照する私をスローします。

@Gaurav:ここでは完全なコードだ - 私はこのページにSELECTとUPDATE文の両方を持っている、SELECT作品:

if (!isset($page_uri)) 
    { 
    $page_uri = 'home'; 
    } 

if (isset($_POST['update'])) 
    { 
    $page_title = htmlspecialchars($_POST['page_title']); 
    $meta_description = htmlspecialchars($_POST['meta_description']); 
    $meta_keywords = htmlspecialchars($_POST['meta_keywords']); 
    $content = htmlspecialchars($_POST['content']); 

    $update_page = $db->stmt_init(); 
    $update_page->prepare (" 
    UPDATE pages 
    SET page_title = ?, meta_description = ?, meta_keywords = ?, $content = ? 
    WHERE page_uri = ? 
    "); 

    $update_page->bind_param('sssss', $page_title, $meta_description, $meta_keywords, $content, $page_uri); 
    $update_page->execute(); 
    } 


$select_page = $db->stmt_init(); 
$select_page = $db->prepare (" 
SELECT page_id, page_title, meta_description, meta_keywords, content, sidebar 
FROM pages 
WHERE page_uri = ? 
LIMIT 1 
"); 
$select_page->bind_param('s', $page_uri); 
$select_page->execute(); 
$select_page->bind_result($page_id, $page_title, $meta_description, $meta_keywords, $content, $sidebar); 
$select_page->fetch(); 
$page_title = htmlspecialchars_decode($page_title, ENT_QUOTES); 
$meta_description = htmlspecialchars_decode($meta_description, ENT_QUOTES); 
$meta_keywords = htmlspecialchars_decode($meta_keywords, ENT_QUOTES); 
$content = htmlspecialchars_decode($content, ENT_QUOTES); 
+0

mysqliの場合、あなたのphpinfo()は何を表示しますか? – egis

+0

btw、$ dbオブジェクトを開始するコードを表示します。データベースが選択されていない可能性があります;) – egis

+0

@egis - これはコード全体です:$ db = new mysqli(DBHOST、DBUSER、DBPASS、DATABASE); - phpinfo()について、私は何を探していますか、私はmysqliをインストールしました。実際には、それ以外のものはありますか? – CodeVirtuoso

答えて

1

解決済み:お世話になってくれてありがとう。周りの閲覧後、私はここで答えを見つけました:

Why do I get this function call error on an non-object when I am calling a function on an object?

をニースの洞察力はあなたがbind_param前のvar_dumpを($例)()を行う場合には、基本的に、あなたは見つけるでしょうupvoted答え

から得ることができますオブジェクトがまったく返された場合 - 私の場合はbool(false)ではなかったので、SQLクエリ自身の文字を手紙のために再調査し、愚かなタイプミスが見つかりました。コンテンツの代わりに) - ときどき、肉眼でエラーをキャッチすることができないので、方法論を持っていいですね。私はとても学んでいます:)

2

あなたが$update_page->prepare()

this

これ以降を参照してください使用する必要がありますmysqli_stmt_prepare()が呼び出されるまで、mysqli_stmt関数の呼び出しは失敗します。

編集:sssssの代わりにssssiを使用してください。

+0

Gauravありがとうございました。私はリンク先のページを読んで、もう少し試してみましたが、それでも動作させることはできません。 mysqli_stmt :: bind_param()[mysqli-stmt.bind-param]:無効なオブジェクトまたはリソースmysqli_stmt – CodeVirtuoso

+0

私に最も混乱させるものは何ですか?私の元の質問からの構文はSELECTクエリでうまく動作するのですが、私はそれを得たと思っています。 – CodeVirtuoso

+0

あなたは完全なコードを投稿できますか?いくつかの構文上の問題があります。 – Gaurav

関連する問題