库MySQLi INSERT不工作

问题描述:

代码:库MySQLi INSERT不工作

#!/usr/bin/php 
<?php 
error_reporting(E_ALL); 
while(true){ 
    // Check how many API calls remain 
    $rate_limit = json_decode(file_get_contents('http://api.twitter.com/1/account/rate_limit_status.json'),true); 
    // Array containing all the Twitter handles 
    $handles = array('le4ky'); 

    if($rate_limit['remaining_hits']<count($handles)){ 
     file_put_contents('tweet_gremlin.log', date('r') . ' Rate limit reached'); 
     sleep(30); 
    }else{ 
     // Establish the database connection 
     if(!$mysqli = mysqli_connect('localhost','twitterd','password','twitterd')){ 
      die('Cannot connect to database'); 
      file_put_contents('tweet_gremlin.log', date('r') . ' Cannot connect to the database'); 
     } 


     // This is the big one. Loop through the $handles values, make an API call, and insert the tweets. 
     foreach($handles as $value){ 
      // Get the handle's timeline and put it into $user_data 
      $user_data = json_decode(file_get_contents('http://search.twitter.com/search.json?q=from:' . $value . '&rpp=100'),true); 
      // Put only the results index (tweets) into into $user_data 
      $user_data = $user_data['results']; 

      for($i=0;$i<count($user_data);$i++){ 

       // Lazy method for sanitizing variables 
       $id = mysqli_real_escape_string($mysqli,$user_data[$i]['id']); 
       $created_at = mysqli_real_escape_string($mysqli,$user_data[$i]['created_at']); 
       $from_user_id = mysqli_real_escape_string($mysqli,$user_data[$i]['from_user_id']); 
       $profile_image_url = mysqli_real_escape_string($mysqli,$user_data[$i]['profile_image_url']); 
       $from_user = mysqli_real_escape_string($mysqli,$user_data[$i]['from_user']); 
       $from_user_name = mysqli_real_escape_string($mysqli,$user_data[$i]['from_user_name']); 
       $text = mysqli_real_escape_string($mysqli,$user_data[$i]['text']); 

       $insert_tweets = "INSERT INTO tweets ('id','created_at','from_user_id','profile_image','from_user','from_user_name',`text`) VALUES ({$id},{$created_at},{$from_user_id},{$profile_image_url},{$from_user},{$from_user_name},{$text});"; 
       $result = mysqli_query($mysqli,$insert_tweets); 
      } 
     } 
     sleep(30); 
    } 
} 
?> 

这基本上只是意味着是一个“守护程序”,检索数据,并将其插入到数据库不爽。对于我的生活,我无法弄清楚为什么数据没有被插入到数据库中。 twitterd用户对数据库具有选择和插入权限,并可以从任何主机连接。

你需要周围的字符串值行情在您的SQL查询:

$insert_tweets = " 
    INSERT INTO tweets 
     (`id`,`created_at`,`from_user_id`,`profile_image`,`from_user`,`from_user_name`,`text`) 
    VALUES 
     ('{$id}','{$created_at}','{$from_user_id}','{$profile_image_url}','{$from_user}','{$from_user_name}','{$text}') 
"; 

我加入他们的所有值,你可以删除它们,你知道是值的数字(与intval()floatval()或其他一些数字验证验证功能)。

我也在列名中用反引号替换了单引号。

+0

所以,另一个问题......你看到任何错误的循环通过$句柄的for()循环?我向该阵列添加了两个用户,并且该脚本没有为他们抓取数据。只有数组中的第一个用户。 – Chad 2012-07-28 02:37:35

+0

嗯,没关系。我删除了$ result变量,现在它工作正常。有关为什么发生的任何想法? – Chad 2012-07-28 02:45:12

+0

如果你所做的只是删除'$ result',这很奇怪,因为它应该不会影响是否存在(因为你没有使用'$ result')。 – nickb 2012-07-28 02:46:34