重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
建议楼主把SQL语句显示出来,自然就明白问题在哪里了,我试着简单说一下,假设你的USER数据表有三个字段(name、age、sex),_POST提交数据也是这三个字段的,假设POST的值分别是abc、18、男,那么帖子的PHP会执行下面的三个SQL语句:
成都创新互联主要从事网站设计制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务卓尼,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
INSERT INTO USER(name) VALUES(abc)
INSERT INTO USER(age) VALUES(18)
INSERT INTO USER(sex) VALUES(男)
现在明白了吧,一、三两句会语法错误,英文没有在文本字段添加引号,第二句即使执行成功插入的记录只有年龄,姓名、性别为空,如果数据库有限制字段有效性,那么第二句插入也会失败,数据库需要的语句是:
INSERT INTO USER(name,age,sex) VALUES('abc',18,'男')
如果理解了,自然会下面这样写PHP语句:
$sql=END
INSERT INTO USER(name,age,sex)
VALUES('{$_POST['name']}',{$_POST['age']},'{$_POST['sex']}')
END;
用while循环例如:
$res = mysql_query("select id,name,description,price,pic_url1 from ebf_products");
while($pp = mysql_fetch_array($res,MYSQL_ASSOC) or false){
$list[] = $pp;
}
那就用sphinx 技术,目前这个是最好的,没有之一。
下面是我百度百科弄过来的,怎么使用还得你自己看白皮书了。
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);
高可用性 (单CPU上最大可支持100 GB的文本,100M文档);
提供良好的相关性排名
支持分布式搜索;
提供文档摘要生成;
提供从MySQL内部的插件式存储引擎上搜索
支持布尔,短语, 和近义词查询;
支持每个文档多个全文检索域(默认最大32个);
支持每个文档多属性;
支持断词;
支持单字节编码与UTF-8编码。[1]
for(;;)FOR循环是这样的,第一个分号前面是定义一个变量如:$i=1两个分号中间是定义条件如:$i10第二个分号后是方法如:$i++
for($i=1;$i10;$i++){
echo $i++;
}
这样的话就是输出一到九
如果你要用FOR 来写你那个数据库查询显示语句的话应该写不出吧 ,你看看下面有没有高手写出来咯,我也是PHP菜鸟 呵呵
如果是根据ID查询的话还有可能我写写看
还有如果你只是查数据库中的记录的话最好不要用mysql_fetch_array
因为这样会查出很多东西,而你只是想要的是记录,它会带出你查出的直的索引什么的,速度慢用mysql_fetch_assoc好
这当然是不行的了,上面的告诉你的也是错误的,因为原因在于你循环的时候进行了数据库的查询,所以每次都是新的数据,指针当然要从第一条开始了。
所以不是你的循环的错误,而是你数据库查询代码位置的错误
要这样写
$num=mysql_query("select
*
from
china_city
where
parentid=0");
$n=
mysql_num_rows
($num);
for($i=1;$i=$n;$i++){
${"row".$i}=mysql_fetch_array($num);
echo
$i."
".${"row".$i}['city']."
";
}
一般都是用foreach或while写的
foreach(mysql_fetch_array($num)
as
$key=$value){}
while($row
=mysql_fetch_array($num)){}
你这种方式数据入库的话,1000w条数据,要连接1000w次数据库的,性能肯定是差的,因为建立一次数据库连接是开销很大的操作
数据库的插入是支持多条的啊
insert into 表(字段) values (值),(值2),(值3)
这样就可以连接一次数据库,插入多条数据了,可以把1000w条数据分几组,这样连接数据库的次数会大大减少,性能自然就好了