2012-08-24 79 views
0

我的网站有这个关于页面的链接列表,点击不同的类。这些链接显然会将您带入不同的子内容。 为什么这些链接有不同的类?因为我使用javascript和jquery,从数据库中抓取一些内容,并在没有重新加载的情况下将它放在div上...数据库有3个字段:id,标题和内容。为什么这个数据库连接速度太慢?

javascript工作正常。它做它应该做的事情。它采用链接类(这是在数据库中的ID),并使用它来抓取正确的内容..

基本上是:

<?php 
//take the post'ed variable you've been given. 
if(isset($_POST['id'])); 

//for convenience use this variable insted 
$id = $_POST['id']; 

//connect to the database 
mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error()); 

//select database 
mysql_select_db("ropox"); 
mysql_query("SET NAMES utf8"); 

//Grab this data  
$query = mysql_query("SELECT * FROM about WHERE id=$id"); 
while($row = mysql_fetch_array($query)) 
{ 

//echo it bask to the original page. This is printed on the original page 
echo $row['content']; 
} 
?> 

当你点击链接,它需要1.03第二次在内容出现在页面上之前。起初它是2秒,但我设法削减它。我所有的其他数据库连接几乎立即发生,甚至通过循环回声很多内容。为什么这么慢?

+4

** **警告你的代码可能会受到SQL注入攻击! –

+1

是'id'一个索引列吗? “约”桌有多大?此外,您的代码容易受到SQL注入攻击 – Cfreak

+0

代码中没有任何内容似乎很慢,但也许可以查看“AJAX”请求以查看最长的时间。你可以看看'Net'面板下的请求。 – Grampa

回答

1

写入到phpMyAdmin的SQL:Explain SELECT * FROM about WHERE id=5

如果唠叨ID没有被索引,如果您有关于在表中的字段的loooot比你有问题,容易:)

更好,使用field1,field2而不是*

这就是你可以做的所有加速选择从sql,其他设置和硬件,如MySQL服务器有1Mb自由运行你的服务器,并需要做大量的交换或者你的处理器是英特尔奔腾1或2类似的东西...因为你连接到本地主机,而不是远程

+0

好的!干杯。它没有带来任何错误。该表仅包含3个字段,所以不应该成为问题,而且我也没有处理任何如此之大的硬件问题。而没有一个专家我敢肯定的说... 想我得忍受它... – TehHO

+0

它可以被廉价的PHP主机上的超跌网站太:你得到更少的CPU时间 – 2012-08-24 20:30:13

1

解决SQL注入方面:

我怎样才能容易受到SQL注入?用户 无法输入自定义值。我知道他们可以改变身份证,但那会是多么有趣的事情?它会然后加载任何东西...

您直接从帖子拉$id

$id = $_POST['id']; 

假设我们有一个聪明的攻击者,操纵帖子的数据并不困难。 @DanielA.White的SQL注入攻击类型警告你的银行,因为你不确定$id是一个数字。正因为如此,让我们假装我在后设置的值id到:

'3; DROP TABLE about;' 

现在你就麻烦了 - 你在引用表中消失了。有关更多信息,请参见http://xkcd.com/327/。 ;)

消毒你的投入实际上是非常简单 - 只要看看这里:What's the best method for sanitizing user input with PHP?

相关问题