建議樓主把SQL語(yǔ)句顯示出來(lái),自然就明白問(wèn)題在哪里了,我試著簡(jiǎn)單說(shuō)一下,假設(shè)你的USER數(shù)據(jù)表有三個(gè)字段(name、age、sex),_POST提交數(shù)據(jù)也是這三個(gè)字段的,假設(shè)POST的值分別是abc、18、男,那么帖子的PHP會(huì)執(zhí)行下面的三個(gè)SQL語(yǔ)句:
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)卓尼,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
INSERT INTO USER(name) VALUES(abc)
INSERT INTO USER(age) VALUES(18)
INSERT INTO USER(sex) VALUES(男)
現(xiàn)在明白了吧,一、三兩句會(huì)語(yǔ)法錯(cuò)誤,英文沒(méi)有在文本字段添加引號(hào),第二句即使執(zhí)行成功插入的記錄只有年齡,姓名、性別為空,如果數(shù)據(jù)庫(kù)有限制字段有效性,那么第二句插入也會(huì)失敗,數(shù)據(jù)庫(kù)需要的語(yǔ)句是:
INSERT INTO USER(name,age,sex) VALUES('abc',18,'男')
如果理解了,自然會(huì)下面這樣寫PHP語(yǔ)句:
$sql=END
INSERT INTO USER(name,age,sex)
VALUES('{$_POST['name']}',{$_POST['age']},'{$_POST['sex']}')
END;
用while循環(huán)例如:
$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 技術(shù),目前這個(gè)是最好的,沒(méi)有之一。
下面是我百度百科弄過(guò)來(lái)的,怎么使用還得你自己看白皮書了。
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查詢速度不到0.1秒);
高可用性 (單CPU上最大可支持100 GB的文本,100M文檔);
提供良好的相關(guān)性排名
支持分布式搜索;
提供文檔摘要生成;
提供從MySQL內(nèi)部的插件式存儲(chǔ)引擎上搜索
支持布爾,短語(yǔ), 和近義詞查詢;
支持每個(gè)文檔多個(gè)全文檢索域(默認(rèn)最大32個(gè));
支持每個(gè)文檔多屬性;
支持?jǐn)嘣~;
支持單字節(jié)編碼與UTF-8編碼。[1]
for(;;)FOR循環(huán)是這樣的,第一個(gè)分號(hào)前面是定義一個(gè)變量如:$i=1兩個(gè)分號(hào)中間是定義條件如:$i10第二個(gè)分號(hào)后是方法如:$i++
for($i=1;$i10;$i++){
echo $i++;
}
這樣的話就是輸出一到九
如果你要用FOR 來(lái)寫你那個(gè)數(shù)據(jù)庫(kù)查詢顯示語(yǔ)句的話應(yīng)該寫不出吧 ,你看看下面有沒(méi)有高手寫出來(lái)咯,我也是PHP菜鳥 呵呵
如果是根據(jù)ID查詢的話還有可能我寫寫看
還有如果你只是查數(shù)據(jù)庫(kù)中的記錄的話最好不要用mysql_fetch_array
因?yàn)檫@樣會(huì)查出很多東西,而你只是想要的是記錄,它會(huì)帶出你查出的直的索引什么的,速度慢用mysql_fetch_assoc好
這當(dāng)然是不行的了,上面的告訴你的也是錯(cuò)誤的,因?yàn)樵蛟谟谀阊h(huán)的時(shí)候進(jìn)行了數(shù)據(jù)庫(kù)的查詢,所以每次都是新的數(shù)據(jù),指針當(dāng)然要從第一條開始了。
所以不是你的循環(huán)的錯(cuò)誤,而是你數(shù)據(jù)庫(kù)查詢代碼位置的錯(cuò)誤
要這樣寫
$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)){}
你這種方式數(shù)據(jù)入庫(kù)的話,1000w條數(shù)據(jù),要連接1000w次數(shù)據(jù)庫(kù)的,性能肯定是差的,因?yàn)榻⒁淮螖?shù)據(jù)庫(kù)連接是開銷很大的操作
數(shù)據(jù)庫(kù)的插入是支持多條的啊
insert into 表(字段) values (值),(值2),(值3)
這樣就可以連接一次數(shù)據(jù)庫(kù),插入多條數(shù)據(jù)了,可以把1000w條數(shù)據(jù)分幾組,這樣連接數(shù)據(jù)庫(kù)的次數(shù)會(huì)大大減少,性能自然就好了