使用 bind_param 将多个字符串插入 mysql
Inserting multiple string into mysql using bind_param
我正在从 Twitter api 中检索推文,我试图将其保存在我的数据库中,但我一直收到错误,我似乎无法修复。我已经检查了参数的数量是否正确,一切都应该没问题,所以我不明白为什么会出现以下错误:
Fatal error: Call to a member function bind_param() on a non-object
推文数据库:
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
变量没有连接到数据库,因此无法调用里面的方法。
在PDO或mysqli中调用execute函数后添加die()
函数打印错误信息也是一个很好的实践,查看查询使用中的错误:
如果使用 PDO:
$insert_tweet->execute() or die(print_r($con->errorInfo()));
如果使用 mysqli:
$insert_tweet->execute() or die(mysqli_error($con));
我正在从 Twitter api 中检索推文,我试图将其保存在我的数据库中,但我一直收到错误,我似乎无法修复。我已经检查了参数的数量是否正确,一切都应该没问题,所以我不明白为什么会出现以下错误:
Fatal error: Call to a member function bind_param() on a non-object
推文数据库:
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
变量没有连接到数据库,因此无法调用里面的方法。
在PDO或mysqli中调用execute函数后添加die()
函数打印错误信息也是一个很好的实践,查看查询使用中的错误:
如果使用 PDO:
$insert_tweet->execute() or die(print_r($con->errorInfo()));
如果使用 mysqli:
$insert_tweet->execute() or die(mysqli_error($con));