【问题标题】:PHP & MYSQL: Update not working with Foreach LoopPHP & MYSQL:更新不适用于 Foreach 循环
【发布时间】:2013-12-10 11:55:51
【问题描述】:

我的 foreach 循环不适用于 mysql 中的更新语句。不知道我做错了什么。这是我的 php sn-p。

        foreach ($request['playlist_information'] as $playlist) {
        $playlistResult = "UPDATE video_playlists SET channel_id='".$playlist['channel_id']."', playlist_id='".$playlist['id']."', playlist_title='".$playlist['title']."', playlist_status='".$playlist['status']."', playlist_description='".$playlist['description']."', playlist_created='".$playlist['date_created']."'";
        $mysqli->query($playlistResult);
        var_dump($playlist['title']);
    }

我的请求,来自我的 javascript 是这样的:

        var param = {
    "channel_id": channelId,
    "video_id": videoId,
    "views": $scope.stats[0]['views'],
    "likes": $scope.stats[0]['likes'],
    "dislikes": $scope.stats[0]['dislikes'],
    "favorites": $scope.stats[0]['favorites'],
    "comments": $scope.stats[0]['comments'],
    "duration": $scope.stats[0]['duration'],
    "dimension": $scope.stats[0]['dimension'],
    "definition": $scope.stats[0]['definition'],
    "caption": $scope.stats[0]['caption'],
    "licensed_content": licensedContent,
    "upload_status": $scope.stats[0]['uploadStatus'],
    "privacy_status": $scope.stats[0]['privacyStatus'],
    "license": $scope.stats[0]['license'],
    "embeddable": embeddable,
    "public_stats_viewable": publicStatsViewable,
    "video_title": $scope.meta[0]['title'],
    "video_status": $scope.stats[0]['privacyStatus'],
    "video_description": $scope.meta[0]['description'],
    "video_tags": $scope.meta[0]['tags'],
    "playlist_information": {}
}



for (var i = 0; i < $scope.playlists.length; i++) {

    param["playlist_information"][i] = {
                    "channel_id": channelId,
                    "id": $scope.playlists[i]['id'],
                    "title": $scope.playlists[i]['title'],
                    "description": $scope.playlists[i]['description'],
                    "status": $scope.playlists[i]['status'],
                    "date_created": $scope.playlists[i]['datePublished']
    }

};

INSERT 工作正常,我可以在没有 php 部分的 foreach 循环的情况下正常更新。我似乎无法确定问题所在。任何帮助表示赞赏。谢谢!

【问题讨论】:

  • print_r($_POST) 在 php 文件中查看 post 结构是什么样的..
  • 什么是错误,使用一些调试,让我们知道确切的问题
  • print_r($_POST) 显示和空数组。顺便说一句,我正在使用 angularjs 并创建一个 youtube api 应用程序。
  • @Noor,没有错误。当我在 php 传输之前和之后 var_dump 请求时,变量会发生变化,但它似乎没有反映在数据库中
  • Echo直接在MySQL中查询和运行。

标签: javascript php mysql mysqli


【解决方案1】:

您的查询中的引号有问题:

$playlistResult = "UPDATE video_playlists SET channel_id='".$playlist['channel_id']."', playlist_id='".$playlist['id']."', playlist_title ='".$playlist['title']."', playlist_status='".$playlist['status']."', playlist_description='".$playlist['description']."', playlist_created=' ".$playlist['date_created']."'";

您可能会遇到语法错误: 检查粗体文本:'".$playlist['channel_id']."'

  $playlistResult = "UPDATE video_playlists SET channel_id=\'".$playlist['channel_id']."\', playlist_id=\'".$playlist['id']."\', playlist_title=\'".$playlist['title']."\', playlist_status=\'".$playlist['status']."\', playlist_description=\'".$playlist['description']."\', playlist_created=\'".$playlist['date_created']."\'";

我希望这会有所帮助,并在必要时检查您的更新情况。

【讨论】:

  • 是的,它确实说当我直接在数据库中运行时出现语法错误,
  • 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在 '$playlistResult = "UPDATE video_playlists SET channel_id='".$playlist['channel' at line 1 i don' 附近使用正确的语法不明白,用这种语法的另一个更新有效
【解决方案2】:

首先请重新检查代码,它应该是 $_REQUEST[] 而不是 $request

 foreach ($_REQUEST['playlist_information'] as $playlist) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多