[英]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.