当我使用脚本网址在谷歌浏览器中尝试此脚本时,此脚本运行速度非常慢,我想知道原因:
<?php
include 'config.php';
$conn = mysqli_connect($servername, $username, $password, $dbname);
$playerEmail = $_REQUEST["playerEmail"];
$sql = "SELECT *
FROM players
WHERE EMAIL = '$playerEmail'";
$res = mysqli_query($conn,$sql);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('EMAIL'=>$row[0],
'DATEOFSIGNUP'=>$row[2],
'USERNAME'=>$row[3],
'GENDER'=>$row[4],
'JOB'=>$row[5],
'LVL'=>$row[6],
'HP_NOW'=>$row[7],
'HP_MAX'=>$row[8],
'MANA_NOW'=>$row[9],
'MANA_MAX'=>$row[10],
'STR'=>$row[11],
'SPD'=>$row[12],
'INTEL'=>$row[13],
'XP_NOW'=>$row[14],
'XP_NEEDED'=>$row[15],
'GOLDS'=>$row[16],
'NUMBERSOFITEMS'=>$row[17],
'LOCATION_X'=>$row[18],
'LOCATION_Y'=>$row[19]
));
}
echo json_encode(array("result"=>$result));
mysqli_close($conn);
?>
我所有的其他脚本都是使用$ _REQUEST制作的,所以我不相信它的原因。你可以想到的任何事情,随时在这里分享。
非常感谢大家!
答案 0 :(得分:3)
您需要使用$sql = "SELECT *
FROM players
WHERE EMAIL = '$playerEmail'";
列的索引来提高速度。
CREATE INDEX idx_nn_1 ON players(EMAIL);
创建索引:
{{1}}
由于您的代码对任何使用SQL注入的人开放,请阅读SQL注入和PHP PDO。您的代码甚至是SQL注入最容易入侵的代码之一(因此真正使代码更好或者您遇到麻烦)。
答案 1 :(得分:2)
在您的EMAIL列上创建索引的答案是正确的,但为了将来参考,这是一种使用PDO编写代码的更快捷,更安全的方法:
{{1}}