Php 将数组值写入mysql数据库
我已经从我的twitter帐户中检索到了直接消息,我想将senderid、发件人屏幕名称和文本存储在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
$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());
}