Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 SQL脚本?_Php_Mysql_Sql - Fatal编程技术网

如何优化这个PHP SQL脚本?

如何优化这个PHP SQL脚本?,php,mysql,sql,Php,Mysql,Sql,我将下面的SQL查询用于我的.net授权系统,该系统通过用PHP编写的后端api授权用户 现在我在SQL方面不是很聪明,但是如果有人能给我指出正确的方向来优化下面的代码,那将非常有帮助 连接PHP: <?php define('DB_HOST', 'localhost'); define('DB_NAME', 'test'); define('DB_USERNAME', 'user'); define('DB_PASSWORD', 'Codwawmw2%'); $odb = new PD

我将下面的SQL查询用于我的.net授权系统,该系统通过用PHP编写的后端api授权用户

现在我在SQL方面不是很聪明,但是如果有人能给我指出正确的方向来优化下面的代码,那将非常有帮助

连接PHP:

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USERNAME', 'user');
define('DB_PASSWORD', 'Codwawmw2%');

$odb = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
?>
} elseif ($Action == "BackLogin"){
    $userID123 = $_GET['uid'];
    $hwid = $_GET['hwid'];
    $ip = getRealIpAddr();
    $pcname = $_GET['pcname'];
    $time123 = time();

    $GetRows = $odb->query("SELECT * FROM `Account` WHERE uid = '$userID123'");
    $row_count = $GetRows->rowCount();
    $count = $row_count;
    if($count == 0){
        $odb->exec("INSERT INTO `Account` (id, uid, cpukey, ip, pcname, online, function, lastlogon) VALUES(NULL,'$userID123','$hwid','$ip','$pcname','0','None','$time123')");
        $response = 'Not Banned';
    } else {
        $response = 'Not Banned';
    }

    if ($response == "Not Banned")
    {
        $finaleresponse = "Success";
        $odb->exec("UPDATE Account SET `online` = '1', `lastlogon` = '$time123', `ip` = '$ip' WHERE `uid` = '$userID123'");
    } 
    else
    {
        $finaleresponse = "Error";
    }
    echo Encrypt($finaleresponse);
}
顺便说一句,我需要优化脚本的原因是,每次50多个客户端同时运行脚本时,它都会在网站/服务器上造成沉重的负载,并且会将整个网站拖到无负载的地步


感谢所有能够提供帮助的人:)

请获取所选字段,而不是*。快速得到你的结果


$GetRows=$odb->query(“从
帐户
中选择uid、cpukey、ip、pcname,其中uid='$userID123')

说。即使是这样也不安全!以什么方式优化?速度效率?代码行?您似乎没有AI列或PK。AI'd列不接受空值,这就是我这么说的原因。您的表有索引吗?50个用户与MySQL无关。警告:当使用PDO时,您应该与占位符值一起使用,并且只将任何用户数据作为
execute
上的参数提供。在这段代码中,您可能会遇到严重的问题。有关如何避免此类问题的建议,请参阅。