pdoによって準備されたステートメントを使用してデータベースにデータを挿入すると、うまくいきません:
私はこの機能を使用します:
public function get_number_of_matches(){
$stmt = $this->pdo->prepare("INSERT INTO `words`( `word_name`, `word_count`, `search_id`) VALUES (:word, :count,:searchID)");
$stmt->bindParam(':word', $word);
$stmt->bindParam(':count', $count);
$stmt->bindParam(':searchID', $search_id);
for($i=0;$i<count($this->words);$i++){
if(preg_match_all('/'.$this->words[$i].'/i', $this->text,$matches)){
$count=count($matches[0]);
$word=$this->words[$i];
$search_id=1;
$stmt->execute();
break;
}
}
return 0;
}
基本的に、値をループしてデータベースに入れようとします..エラーは発生しません..データベースには何も入りません..なぜですか?
これは私がデータベースに接続する方法です:
class DBConnection {
public static $connect;
public static function connect(){
if(!isset(self::$connect)){
try{
self::$connect=new PDO('mysql:host=localhost;dbname=tweeter', 'root', '');
}catch(Exception $ex){
echo $ex->getMessage();
}
}
return self::$connect;
}
}
更新 また..こちらを参照してください:
別のクエリで同じことを行います..しかし、変数内にオブジェクトのプロパティを入れようとすると、エラーが発生します:
$つぶやき= $つぶやき->つぶやき; $user=$tweet->tweeter_name; $link= $つぶやき->リンク;
これらの変数はクエリに入ります。
$pdo= DBConnection::connect();
$stmt = $pdo->prepare("INSERT INTO `tweets`( `tweet`, `tweeter_name`, `link`, `date`, `search_id`) VALUES (:tweet, :tweeter_name, :link, :date, :search_id)");
$stmt->bindParam(':tweet', $tweet);
$stmt->bindParam(':tweeter_name', $user);
$stmt->bindParam(':link', $link);
$stmt->bindParam(':date', $date);
$stmt->bindParam(':search_id', $search_id);
次のようなエラーが表示されます。
注意: 36 行目で C:\xampp\htdocs\Twitter\demo.php の非オブジェクトのプロパティを取得しようとしています
注意: 37 行目で C:\xampp\htdocs\Twitter\demo.php の非オブジェクトのプロパティを取得しようとしています
注意: 38 行目で C:\xampp\htdocs\Twitter\demo.php の非オブジェクトのプロパティを取得しようとしています
プロパティを出力できます..しかし、それらをバインドされた変数に割り当てると..上記のエラーが発生します
私もこれを取得します:
致命的なエラー: C:\xampp\htdocs\Twitter\demo.php:40 のメッセージ「SQLSTATE[23000]: 整合性制約違反: 1048 列 'tweeter_name' を null にすることはできません」を含む例外 'PDOException' がキャッチされない: スタック トレース: #0 C :\xampp\htdocs\Twitter\demo.php(40): PDOStatement->execute() #1 {main} が C:\xampp\htdocs\Twitter\demo.php 行 40 でスローされました
代わりに次のようにチェックしました:
$tweet= "111111"; // $tweet->tweet ;
$user= "22222222"; // $tweet->tweeter_name;
$link= "3333333"; // $tweet->link;
$date= "444444";
そしてそれはうまくいきました..何らかの理由で、それらのオブジェクトのプロパティが嫌いですか?!?
これは入力として行く必要があります:
RT @OrganicLiveFood: 科学者は #EPA について #Monsanto の #GMO 作物の失敗と危険性について警告 #prop37 #labelGMO #yeson37 http://t.co/2XhuVxO8 Doumastic TweetCaster for iOS Mon, 19 Nov 2012 20:40:55 +0000 RT @ OrganicLiveFood: 科学者は #Monsanto の #GMO 作物の失敗と危険性について #EPA に警告 #prop37 #labelGMO #yeson37 http://t.co/2XhuVxO8
しかし、そうではありません...?!?