Php 使用bind_参数将多个字符串插入mysql
我正在从twitterapi中检索tweets,我试图将其保存在数据库中,但是我不断收到一个错误,我似乎无法修复。我已经检查了参数的数量是否正确,一切都应该正常,所以我不明白为什么会出现以下错误: 致命错误:对非对象调用成员函数bind_param() 推特数据库:Php 使用bind_参数将多个字符串插入mysql,php,mysql,twitter,Php,Mysql,Twitter,我正在从twitterapi中检索tweets,我试图将其保存在数据库中,但是我不断收到一个错误,我似乎无法修复。我已经检查了参数的数量是否正确,一切都应该正常,所以我不明白为什么会出现以下错误: 致命错误:对非对象调用成员函数bind_param() 推特数据库: function retrievePlayerTweets(){ global $con; $query = $con->prepare("Select players.fullname, players.tw
function retrievePlayerTweets(){
global $con;
$query = $con->prepare("Select players.fullname, players.twitter_user, team.id as teamId FROM players, team WHERE players.teamId = team.id");
$query->execute();
$query->bind_result($fullname, $twitter_user, $teamId);
while ($query->fetch()) {
foreach(retrieveUserTweets($twitter_user) as $twitterData) {
$id = $twitterData['id_str'];
$text = $twitterData['text'];
$name = $twitterData['user']['name'];
$dateString = $twitterData['created_at'];
$favoriteCount = $twitterData['favorite_count'];
$date = date('Y-m-d H:i:s', strtotime($dateString));
$insert_tweet = $con->prepare("INSERT IGNORE INTO tweets (`fullname`, `username`, `text`, `created`, `teamId`, `twitterId`, `favoriteCount`) VALUES (?, ?, ?, ?, ?, ?, ?)");
$insert_tweet->bind_param("ssssisi", $name, $twitter_user, $text, $date, $teamId, $id, $favoriteCount);
$insert_tweet->execute() or die(mysqli_error($con));
}
}
}
问题在于
$con
变量未连接到数据库,因此无法调用其中的方法
另外,添加die()
函数在调用PDO或mysqli中的execute函数后打印错误消息,以查看查询使用中的错误也是一个很好的做法:
如果使用PDO:
$insert\u tweet->execute()或die(print\r($con->errorInfo())代码>
如果使用mysqli:
$insert_tweet->execute()或die(mysqli_error($con))代码>因此您的prepare语句失败。您需要添加错误处理以查看出现了什么问题。我认为您应该首先将“ssssi”放入变量中。这会有什么帮助?不,我已经有了这个$con=mysqli\u connect('host'、'user'、'pass'、'db')
是的,但请检查它是否成功连接,如果没有在mysqli_connect
函数中,请将实际值放入这些参数中,因为我在另一个查询中的函数开头使用了$con
,我在这一行中不断收到相同的错误$insert_tweet->bind_param(“SSSSSI”,$name,$twitter\u user,$text,$date,$teamId,$id,$favoriteCount)
这是一个简单的错误,您的prepare查询失败,因为$con不正确,因此$insert\u tweet未分配给具有methdbind\u param()的对象。
。