ここから本文です

phpでmysqli構文が上手く動きません

yaaahhhwwwnさん

2007/3/2914:47:27

phpでmysqli構文が上手く動きません

質問します、よろしくお願いします。
現在 winXP apache2 php5.2 mysql5.0.22 でプログラムの勉強をしています。
ですが、書籍に載っていた以下のコードを実行してもエラーがでてうまく動きません。
なにが原因でしょうか?
<?php
$db = new mysqli("localhost","root","oraora","php5");

//テスト
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}else{
echo "接続はできてます";
}

$stt = $db -> prepare("SELECT*FROM c3_access_counter WHERE url=?");
$stt -> bind_param("s",$_SERVER['SCRIPT_NAME']);
$stt -> execute();

if($stt->fetch()!==TRUE){
$sql = "INSERT INTO c3_access_counter(url,cnt) VALUES(?,1)";
}else{
$sql = "UPDATE c3_access_counter SET cnt=cnt+1 WHERE url=?";
}

$stt -> close();
$stt2 = $db->prepare($sql);
$stt2 -> bind_param("s",$_SERVER['SCRIPT_NAME']);
$stt2 -> execute();
$db -> close();
?>

ブラウザに表示されるエラーは以下の通りです。
Fatal error: Call to a member function bind_param() on a non-object in C:\Program Files\Apache Group\Apache2\htdocs\php5_samples\my_sample\chap3\grhCnt\counterUp.php on line 13

どなたかご回答お願いします。
web上のphpマニュアルを読んだんですが、恥ずかしながら理解できませんでした。

閲覧数:
9,771
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kwitknrさん

2007/3/2916:26:23

英和辞典は?
書いてあるとおりだとすれば「メンバー関数bind_param()オブジェクトじゃないものに呼んだ」
ってこと。で13行目はとみればbind_paramがありますよね。
で怪しいのは$sttがうまく取れていないみたい。
ということでprepareを見てみると
「SELECT * FROM c3_access_counter WHERE url=?」
と*の間に空白いれて区切らないといけないでしょう。
ってことなのでは?

この質問は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。