Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP受影响的行=1无法正常工作_Php_Mysql - Fatal编程技术网

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。