Php 将数组值写入mysql数据库

Php 将数组值写入mysql数据库,php,mysql,arrays,Php,Mysql,Arrays,我已经从我的twitter帐户中检索到了直接消息,我想将senderid、发件人屏幕名称和文本存储在mysql数据库表中,以便人工智能标记语言引擎读取,以便它能够相应地进行回复。执行程序后,我检查了数据库,没有从数组中输入任何行,也没有错误消息 这是我的密码: $connection = new TwitterOAuth($consumer_key,$consumer_secret, $oAuthToken, $oAuthSecret); // Get direct message data

我已经从我的twitter帐户中检索到了直接消息,我想将senderid、发件人屏幕名称和文本存储在mysql数据库表中,以便人工智能标记语言引擎读取,以便它能够相应地进行回复。执行程序后,我检查了数据库,没有从数组中输入任何行,也没有错误消息

这是我的密码:

$connection = new TwitterOAuth($consumer_key,$consumer_secret, $oAuthToken, $oAuthSecret);

// Get direct message data 
$content = $connection ->get('https://api.twitter.com/1/direct_messages.json');

echo '<pre>',print_r($content,true),'</pre>';

function write_messages_to_database() {

require_once('connect_to_database');

$conn = mysql_connect("127.0.0.1", "Diego", "frafra") or die(mysql_error());
mysql_select_db('bot', $conn) or die(mysql_error());

foreach ($content as $directmessage) {
   mysql_query("INSERT INTO 'twitter_senders' ('sender_id', 'sender_name'), VALUES ('{$content->id}', '{$content->sender_screen_name}')");
   $directmessage_id = mysql_last_insert_id();
   foreach ($directmessage->text as $text) {
        mysql_query("INSERT INTO 'message_senders' ('message'), VALUES ('{$text->text}')");
   } 

 }
}
  • 您是否调用过
    将消息写入数据库()
    函数

  • 无论如何,我建议您按照以下思路重新定义它:

    foreach ($directmessage->text as $text) {
            mysql_query("INSERT INTO 'message_senders' ('message'), VALUES ('{$text->text}')") 
            or die(mysql_error());
           } 
    

  • 除非我们知道错误是什么,否则我们帮不了你

    尝试这样做:

    foreach ($directmessage->text as $text) {
        $query = sprintf("INSERT INTO 'message_senders' ('message'), VALUES ('%s')"
                    , mysql_real_escape_string($text->text));
        mysql_query($query) or die(mysql_error());
    } 
    
    此外,更好的方法是:


    **警告:您的代码易受sql注入攻击。欢迎使用Stackoverflow!(请有人更正此代码!)正如@DanielA.White所说,您的代码容易受到SQL注入攻击。你真的应该使用事先准备好的语句。如果你不明白它们是什么,或者你为什么需要它们,请阅读。我不认为twitter会进行SQL注入攻击,在这种情况下。@GabrielSantos:“
    插入到“消息发送者”('message')、值(“{$text->text}”)
    ”-谁知道这种直接消息可能包含什么文本。我没有收到任何错误消息,只是程序没有写入数据库,我将所有函数放在一个单独的php文件中,如本文的代码部分所示。问题是,在尝试上述脚本时,对象“文本”不会进入数据库,因为它在数组中看起来是独立的,如下所示:)[created_at]=>Mon Apr 23 22:15:38+0000 2012[id]=>1.9455012476723E+17[sender_screen_name]=>sdiegolo[text]=>Hello Infobot![code]需要_once('functions.php');将_连接到_数据库();将消息写入数据库($content);[/code]@DiegoCanale:我认为,正如我在回答中的评论所暗示的那样,
    文本
    部分不是数组-因此
    foreach($directmessage->text as$text)
    永远不会被输入;将其替换为一个简单的
    $text=$directmessage->text
    ,如上面更新的答案所示。我在引用行$message_stmt->execute()时得到了“Parse error:syntax error,unexpected T T_VARIABLE”;请检查您的代码是否与上述代码完全相同。如果您找不到任何差异,请使用您当前的代码更新您的问题,我们可以查看。$sender\u stmt=$dbh->prepare(“插入到twitter\u发件人(发件人id)值(:id)”)$发送方\u stmt->bindParam(“:id”,$sender\u id);$message\u stmt=$dbh->prepare(“插入到twitter\u发送者(发送者别名)值(:发送者\屏幕\名称),插入到message\u发送者(发送者\ id,消息)值(:id,:文本)”;foreach($directmessage形式的内容){$sender\u id=$directmessage->sender->id;$sender\u stmt->execute();$alias=$directmessage->sender\u screen\u name$text=$directmessage->text$message\u stmt->execute();}
    foreach ($directmessage->text as $text) {
            mysql_query("INSERT INTO 'message_senders' ('message'), VALUES ('{$text->text}')") 
            or die(mysql_error());
           } 
    
    foreach ($directmessage->text as $text) {
        $query = sprintf("INSERT INTO 'message_senders' ('message'), VALUES ('%s')"
                    , mysql_real_escape_string($text->text));
        mysql_query($query) or die(mysql_error());
    }