【问题标题】:Array into MYSQL数组到MYSQL
【发布时间】:2014-04-10 17:41:54
【问题描述】:

我有几个例子,但我无法掌握。我有以下代码,回声有效,但插入无效。我相信我应该爆炸这些?不确定,但也许有人可以用我自己的例子给我一个提示。

$con=mysqli_connect(localhost,"username","password","db");


// Check connection
if (mysqli_connect_errno())
 {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }

$deletetable = $con->prepare('TRUNCATE TABLE twitch_streams');
$deletetable->execute();
$deletetable->close();

$result = $con->prepare("SELECT field_value
FROM xf_user_field_value
WHERE field_id = 'twitch'
AND field_value != ''");

$result->bind_result($twitchfield);

while($result->fetch())
{
printf("%s\n", $twitchfield);
$username[] = $twitchfield;
$data =    json_decode(file_get_contents('http://api.justin.tv/api/stream/l   ist.json?channel=' . $username[0]));
$viewer[] = $data[0]->channel_count;


$insert = $con->prepare("INSERT INTO twitch_streams (twitchuser, viewercount)
VALUES (?, ?)");
$insert = bind_param('si', $twitchuser, $viewercount);

$twitchuser = $username[0];
$viewercount = $viewer[0];

$insert->execute();

echo $twitchuser;
echo $viewercount;
$insert->close();
  }

$result->close();$deletetable = $con->prepare('TRUNCATE TABLE twitch_streams');
$deletetable->execute();
$deletetable->close();

$result = $con->prepare("SELECT field_value
FROM xf_user_field_value
WHERE field_id = twitch
AND field_value != ''");

$result->bind_result($twitchfield);

while($result->fetch())
  {
   printf("%s\n", $twitchfield);
   $username[] = $twitchfield;
   $data =    json_decode(file_get_contents('http://api.justin.tv/api/stream/l   ist.json?      channel=' . $username[0]));
$viewer[] = $data[0]->channel_count;


$insert = $con->prepare("INSERT INTO twitch_streams (twitchuser, viewercount)
VALUES (?, ?)");
$insert = bind_param('si', $twitchuser, $viewercount);

$twitchuser = $username[0];
$viewercount = $viewer[0];

$insert->execute();

echo $twitchuser;
echo $viewercount;
$insert->close();
  }

$result->close();
mysqli_close($con);

【问题讨论】:

  • 伙计们,如果可以,请使用 PLACEHOLDERS。
  • 尝试回显您的查询
  • 我编辑了我的主要帖子以显示我的整个代码。我运行一个查询来获取数据,获取该数据并通过 JSON API 运行它,然后我试图将结果存储在另一个表中。 *编辑,我想我看到了我需要的东西。谢谢约翰!
  • *编辑感谢约翰,我想我明白了。准备好的陈述会代替逃跑吗?还是在准备的时候还是应该逃跑?
  • 您是为我们准备的还是您的真实代码?因为您也缺少“localhost”周围的引号。如果您使用正确的占位符,则转义由 mysqli 引擎完成。你不需要这样做。

标签: php mysql sql mysqli insert


【解决方案1】:

您的字符串值周围缺少引号:

"INSERT INTO twitch_streams (twitchuser, viewercount)
VALUES ($username[0], $viewer[0])"

应该是

"INSERT INTO twitch_streams (twitchuser, viewercount)
VALUES ('$username[0]', '$viewer[0]')"

如果您在代码中添加错误处理,您将很容易发现此错误。考虑使用mysqli_error()

$result = mysqli_query($con,"INSERT INTO twitch_streams (twitchuser, viewercount)
VALUES ('$username[0]', '$viewer[0]')");
if (!result) {
    // This should be done better than this
    echo mysqli_error();
    exit;
}

由于我无法从您的代码中判断$data[0]->channel_count 的来源是什么,我还要提到您至少应该使用mysqli_real_escape_string() 转义插入变量。更好的是,使用prepared statements

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2014-05-10
    • 2013-04-06
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多