query('SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE "%我愛你%"')
想把上面這句query出來的id 組成一個字串,不知怎麼弄呢
比如 輸出了五個id值,分別是 1,2,3,4,5
現在我想把這五個值通過變換,搞成這樣的字串
(1,2,3,4,5)
不知怎麼弄呢
我想用下面的方法試圖做一下,但是不行呢
$result=query('SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE "%我愛你%"');
$foodsPic=array();
while($row=mysql_fetch_array($result)){
$foodsPic[]=$row;
}
print_r($foodsPic);
上面這個方法不僅把id都弄進去了,把別的沒用的也一鼓腦弄進去了,我只想要id的集合,並且通過處理,把這幾個id搞成字串的形式,即(1,2,3,4,5)
不知如何改進呢,
回複討論(解決方案)
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";$result=mysqli_query($link,$SQ);$idStr='';if(mysqli_num_rows($result)){ $data=mysqli_fetch_all($result,MYSQL_ASSOC); foreach($data as $value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";$result=mysqli_query($link,$SQ);$idStr='';if(mysqli_num_rows($result)){ $data=mysqli_fetch_all($result,MYSQL_ASSOC); foreach($data as $value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}
寫了一下還是不行,但我感覺你這個思路是正確的,只是我不會利我其中的一個資料庫操作類
比如你在其中用的一個函數是 mysqli_fetch_all
我查了一下資料好象這個函數被取締了.
另外我的系統中有一個資料庫函數操作類,帖上來
sql=mysql_query($query,return_dblink($query)) or die($ecms_config['db']['showerror']==1?mysql_error().'
'.str_replace($GLOBALS['dbtbpre'],'***_',$query):'DbError');return $this->sql;}//執行mysql_query()語句2function query1($query){$this->sql=mysql_query($query,return_dblink($query));return $this->sql;}//執行mysql_query()語句(選擇資料庫USE)function usequery($query){global $ecms_config;$this->sql=mysql_query($query,$GLOBALS['link']) or die($ecms_config['db']['showerror']==1?mysql_error().'
'.str_replace($GLOBALS['dbtbpre'],'***_',$query):'DbError');if($GLOBALS['linkrd']){mysql_query($query,$GLOBALS['linkrd']);}return $this->sql;}//執行mysql_query()語句(操作資料庫)function updatesql($query){global $ecms_config;$this->sql=mysql_query($query,return_dblink($query)) or die($ecms_config['db']['showerror']==1?mysql_error().'
'.str_replace($GLOBALS['dbtbpre'],'***_',$query):'DbError');return $this->sql;}//執行mysql_fetch_array()function fetch($sql)//此方法的參數是$sql就是sql語句執行結果{$this->r=mysql_fetch_array($sql);return $this->r;}//執行fetchone(mysql_fetch_array())//此方法與fetch()的區別是:1、此方法的參數是$query就是sql語句 //2、此方法用於while(),for()資料庫指標不會自動下移,而fetch()可以自動下移。function fetch1($query){$this->sql=$this->query($query);$this->r=mysql_fetch_array($this->sql);return $this->r;}//執行mysql_num_rows()function num($query)//此類的參數是$query就是sql語句{$this->sql=$this->query($query);$this->num=mysql_num_rows($this->sql);return $this->num;}//執行numone(mysql_num_rows())//此方法與num()的區別是:1、此方法的參數是$sql就是sql語句的執行結果。function num1($sql){$this->num=mysql_num_rows($sql);return $this->num;}//執行numone(mysql_num_rows())//統計記錄數function gettotal($query){$this->r=$this->fetch1($query);return $this->r['total'];}//執行free(mysql_result_free())//此方法的參數是$sql就是sql語句的執行結果。只有在用到mysql_fetch_array的情況下用function free($sql){mysql_free_result($sql);}//執行seek(mysql_data_seek())//此方法的參數是$sql就是sql語句的執行結果,$pit為執行指標的位移數function seek($sql,$pit){mysql_data_seek($sql,$pit);}//執行id(mysql_insert_id())function lastid()//取得最後一次執行mysql資料庫id號{$this->id=mysql_insert_id($GLOBALS['link']);if($this->id<0){$this->id=$this->gettotal('SELECT last_insert_id() as total');}return $this->id;}//返回影響數量(mysql_affected_rows())function affectnum()//取得操作資料表後受影響的記錄數{return mysql_affected_rows($GLOBALS['link']);}}?>
能不能改用這裡的方法呢,比如假如
先執行個體化這個類
$empire=news mysqlquery();
然後用$empire->的方法怎麼改寫上面的呢,
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";$result=mysqli_query($link,$SQ);$idStr='';if(mysqli_num_rows($result)){ $data=mysqli_fetch_all($result,MYSQL_ASSOC); foreach($data as $value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}
query('SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE "%現貨促銷產品%"');//查詢副表下的infotags欄位$idStr='';if($empire->num($sqld)){ $data=$empire->fetch($sqld); foreach($data as $key=>$value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}?>
我改了一下,但是沒有成功,不知哪錯了
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";$result=mysqli_query($link,$SQ);$idStr='';if(mysqli_num_rows($result)){ $data=mysqli_fetch_all($result,MYSQL_ASSOC); foreach($data as $value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}
我這麼寫,出來結果了,但是全是亂七八糟的一些數字連在一起了
$sqld=$empire->query('SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE "%我愛你%"');//查詢副表下的infotags欄位
$idjh=array();
while($bqrd=$empire->fetch($sqld)){
if($bqrd[id])
$idStr.=$bqrd[id];
//$idStr=rtrim($idStr,',');
echo $idStr;
//代碼誤導你了 修改一下 $idStr.=$bqrd[id].',';}$idStr=rtrim($idStr,',')
另外 mysqli_fetch_all 是 PHP 的mysql資料庫驅動 並沒有給淘汰,只是伺服器需要開啟這個支援而已.有的伺服器環境可能沒有支援比如 sea...一般自己編譯的伺服器都可以輕鬆得到這個支援
另外 mysqli_fetch_all 是 PHP 的mysql資料庫驅動 並沒有給淘汰,只是伺服器需要開啟這個支援而已.有的伺服器環境可能沒有支援比如 sea...一般自己編譯的伺服器都可以輕鬆得到這個支援
這段代碼改成while不用foreach的形式可以嗎,並且如何改呢
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";
$result=mysqli_query($link,$SQ);
$idStr='';
if(mysqli_num_rows($result)){
$data=mysqli_fetch_all($result,MYSQL_ASSOC);
foreach($data as $value){
if(isset($value['id']))
$idStr.=$value['id'];
}
$idStr=rtrim($idStr,',');
echo $idStr;
}
$SQ="SELECT infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%'";$result=mysqli_query($link,$SQ);$idStr='';if(mysqli_num_rows($result)){ $data=mysqli_fetch_all($result,MYSQL_ASSOC); foreach($data as $value){ if(isset($value['id'])) $idStr.=$value['id']; } $idStr=rtrim($idStr,','); echo $idStr;}
你這個能改成while形式嗎,改完後就可以加分了
//hava a try SELECT GROUP_CONCAT(infotags SEPARATOR ",") as infotags,id FROM hd_ecms_shop_data_1 WHERE hd_ecms_shop_data_1.infotags LIKE '%我愛你%' GROUP BY infotags
可以查詢出來id的數組再用implode來處理啊,為啥非要用sql查詢來處理?
可以查詢出來id的數組再用implode來處理啊,為啥非要用sql查詢來處理?
怎麼寫,無碼無真相
//騷年,這是基本功的問題啊while($row=mysql_fetch_array($result)){ $id[]=$row['id'];}echo join(",",$id);
//騷年,這是基本功的問題啊while($row=mysql_fetch_array($result)){ $id[]=$row['id'];}echo join(",",$id);
上仙,再請教一下
為啥
echo $row[id];//列印不出值,也不報錯
//echo join(",",$id);//能列印出值來
//騷年,這是基本功的問題啊while($row=mysql_fetch_array($result)){ $id[]=$row['id'];}echo join(",",$id);
上仙我搞錯了,思維完全混亂造成的,
Array ( [0] => 9 [1] => 38 [2] => 39 [3] => 40 [4] => 36 [5] => 37 )
//騷年,這是基本功的問題啊while($row=mysql_fetch_array($result)){ $id[]=$row['id'];}echo join(",",$id);
上仙的方法不錯,加分,希望今後再接再曆,不要辜負我們對你的期望!欽此!
//騷年,這是基本功的問題啊while($row=mysql_fetch_array($result)){ $id[]=$row['id'];}echo join(",",$id);
嗯,上仙的方法不錯,加分了,上仙!