PHP受影响的行=1无法正常工作
我的剧本:PHP受影响的行=1无法正常工作,php,mysql,Php,Mysql,我的剧本: <?php ob_start(); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past header('Content-type: text/html; charset=utf-8'); include "tilslut.php"; $userid = $_GET[
<?php
ob_start();
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Content-type: text/html; charset=utf-8');
include "tilslut.php";
$userid = $_GET["userid"];
$s = mysql_query("SELECT points, lastpoint FROM member_profile WHERE user_id = '".$userid."'");
$n = mysql_fetch_array($s);
$tid = time();
mysql_query("UPDATE member_profile set points = points+1, lastpoint=$tid WHERE lastpoint<=$tid-60 AND user_id = '".$userid."'");
$e = mysql_query("SELECT points FROM member_profile WHERE user_id = '".$userid."'");
$f = mysql_fetch_array($e);
if (mysql_affected_rows() == 1) {
$s = mysql_query("SELECT points FROM member_profile WHERE user_id = '".$userid."'");
$n = mysql_fetch_array($s);
?>
Inserted!
<?
}else{
echo "Already got";
}
ob_flush();
?>
我有这个给分。
更新查询可以工作,并且只有在lastpoint必须在更新后立即调用mysql\u受影响的行,然后再进行另一次选择时,才会给出point。mysql\u受影响的\u行将仅对连接上执行的最后一次查询起作用。Youru查询
$e = mysql_query("SELECT points FROM member_profile WHERE user_id = '".$userid."'");
正在导致受影响的行等于1。我建议您在更新后立即检查受影响的行您是:
执行更新查询
然后,执行select查询
而且,只有到那时,调用mysql\u才会影响\u行
如果您在更新查询之后立即调用mysql\u-Infected\u行,而不在这些行之间进行另一个查询,那么效果可能会更好:mysql\u-Infected\u行应该使用上一个查询中的数据-即使文档没有说明select查询,我想这可能会导致一些问题 作为旁注:您有一些SQL注入的风险,这里是:在注入SQL查询之前,您应该先转义数据,我考虑的是$_GET[userid],或者,至少,确保它是一个整数
您应该使用更具描述性的变量名:$e,$f,$n,$s。。。这使您的代码更难阅读/理解/维护:-包含文件的名称很不幸。包含文件是一个数据库connection@Anon.-至少它不是以“l”开头的。谢谢你的回答,但我已经接受了第一个答案,与你的答案相同。谢谢你的回答,但是我已经接受了第一个答案,这和你的答案是一样的。谢谢你的留言,我已经知道了,但我现在只是测试脚本。没问题,谢谢你的评论:-我只是觉得关于转义的几句话永远不会有坏处:-文档没有提到选择查询-选择查询不会影响有问题的行,因为选择是只读的。因此,按预期,受SELECT查询影响的行数为0。