繁体   English   中英

PHP不会运行多个查询

[英]PHP wont run multiple queries

这个PHP脚本是针对我网站上的“虚拟公司”的。 这样做的目的是,当用户向公司发送信用额/像素时,应将其从用户中删除并存入公司的帐户中。

该脚本没有返回任何错误,最后将用户发送到“ / me”,所以我认为问题在于查询未在运行。

  <?php
    if (isset($_POST['sendmoneyvirk'])) {

    $credits = mysql_real_escape_string($_POST['credits']);
    $creditsnew = preg_replace("/[^0-9]/","", $credits);        

    $pixels = mysql_real_escape_string($_POST['pixels']);
    $pixelnew = preg_replace("/[^0-9]/","", $pixels);       


        $getUserinfo = mysql_query("SELECT activity_points, username, credits, online FROM users WHERE id = ".intval($_SESSION['user']['id']));
        while($userinfo = mysql_fetch_array($getUserinfo)) {    
         $pixelsval = $userinfo['activity_points'];
         $creditsval = $userinfo['credits'];
        }


    if ($creditsnew > $creditsval) {
        header('Location: index.php?url=me&error=c1');
        exit;
    }

    if ($pixelsnew > $pixelsval) {
        header('Location: index.php?url=me&error=p1');
        exit;
    } 

    function strip_tags_content($text, $tags = '', $invert = FALSE) { 

      preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); 
      $tags = array_unique($tags[1]); 

      if(is_array($tags) AND count($tags) > 0) { 
        if($invert == FALSE) { 
          return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); 
        } 
        else { 
          return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); 
        } 
      } 
      elseif($invert == FALSE) { 
        return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); 
      } 
      return $text; 
    }

    mysql_query("UPDATE users SET credits = credits - '".strip_tags_content($creditsnew)."' WHERE id = '$userid'")or die(mysql_error());
    mysql_query("UPDATE companies SET credits = credits + '".strip_tags_content($creditsnew)."' WHERE id = '$virkidnew'")or die(mysql_error());
    mysql_query("UPDATE users SET activity_points = activity_points - '".strip_tags_content($pixelsnew)."' WHERE id = '$userid'")or die(mysql_error());
    mysql_query("UPDATE companies SET pixels = pixels + '".strip_tags_content($pixelsnew)."' WHERE id = '$virkidnew'")or die(mysql_error());

    header('Location: me');
    exit;
    }
?>

首先-您应该看看使用mysql PDO,因为mysql_query是“老旧的”( 请在此处阅读

其次,您可以使用mysql_affected_rows()查看mysql_query上发生的情况-这将告诉您每个UPDATE更改了多少行-如果任何/所有查询的答案均为0,则很可能是因为您查询有问题-我建议抓取查询并直接针对数据库运行(使用PHPMyAdmin或类似工具)以对其进行调试。

显然,这只是一个代码片段,但是$ userid可能为空/未设置-值得一看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM