解决方案 »
- file_get_contents 获取的内容为空求解
- 不知道去哪儿寻求帮助来这里求个php论坛的URL规则
- mysql#2002 error 找不到原因
- 谁有比较安全的 强大一点的购物车类 发一下共享一下可以吗
- VMware workstation 5.5 我怎么不能安装?
- json_encode后的数据是这样的,谁帮我看看js中怎么把它转成数组的?
- 高级 sql 多表 并集查询 难呀,帮帮忙 解决给300 分呀!
- 通过email里的一个地址可以更改数据。
- 怎么把4字节数字转为16进制?
- php执行sql返回值问题
- php电商项目出现重复添加数据的情况
- 为啥下载的文件会是损坏的额?? 这是什么问题??????? 求大神什么的
$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
我查了一下资料好象这个函数被取缔了.
另外我的系统中有一个数据库函数操作类,帖上来
<?php
define('InEmpireCMSDbSql',TRUE);class mysqlquery
{
var $dblink;
var $sql;//sql语句执行结果
var $query;//sql语句
var $num;//返回记录数
var $r;//返回数组
var $id;//返回数据库id号
//执行mysql_query()语句
function query($query){
global $ecms_config;
$this->sql=mysql_query($query,return_dblink($query)) or die($ecms_config['db']['showerror']==1?mysql_error().'<br>'.str_replace($GLOBALS['dbtbpre'],'***_',$query):'DbError');
return $this->sql;
}
//执行mysql_query()语句2
function 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().'<br>'.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().'<br>'.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->的方法怎么改写上面的呢,
$sqld=$empire->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;
}
?>
我改了一下,但是没有成功,不知哪错了
$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,',')
这段代码改成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;
}
你这个能改成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
//骚年,这是基本功的问题啊while($row=mysql_fetch_array($result)){
$id[]=$row['id'];
}
echo join(",",$id);
为啥
echo $row[id];//打印不出值,也不报错
//echo join(",",$id);//能打印出值来
Array ( [0] => 9 [1] => 38 [2] => 39 [3] => 40 [4] => 36 [5] => 37 )