sql出來的集合如何變換成想要的字串 100分!

來源:互聯網
上載者:User
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);


嗯,上仙的方法不錯,加分了,上仙!
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.