来源:5-5 [PDO] 数据库操作类之主键查询

半夜有行舟

2014-09-17 23:09


public static function findById($fields='',$tagName,$priId){

$sql='select %s from %s where id=%d';

return self::getRow(sprintf($sql,self::parseField($fields),$tabName,$priId));

}

//分析查找域

public static function parseField($fields){

if(is_array($fields)){

array_walk($fields, array('PdoMysql','addSpecilChar'));

$fieldsStr=implode(',',$fields);

}elseif(is_string($fields)&&!empty($fields)){

if(strpos($fields,'`')===false){

$fields=explode(',',$fields);

array_walk($fields,array('PdoMysql','addSpecilChar'));

$fieldsStr=implode(',',$fields);

}else{

$fieldsStr=$fields;

}

}else{

$fieldsStr='*';

}

return $fieldsStr;

}

public static function addSpecilChar($value){

if($value==='*'||strpos($value,'.')!==false||strpos($value,'`')!==false){

//不用处理

}elseif(strpos($value,'`')===false){

$value='`'.trim($value).'`';

}

return $value;

}


$tabName='user1';

$priId='20';

$fields='username,email';

print_r($PdoMysql->findById($fields,$tabName,$priId));

为什么显示You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id=20' at line 1?



写回答 关注

1回答

  • King
    2014-09-18 08:53:59

    证明你的SQL语句有问题,你把SQL语句输出出来,在命令行执行下看看哪错啦,出问题解决问题就是进步的过程,加油^-^...

    枪与玫瑰

    老师为什么这个语法 array_walk($array, array('className', 'walkFunction'));手册上找不到

    2016-11-11 17:07:46

    共 2 条回复 >

PDO—数据库抽象层

本教程主要通过实战演练深入剖析PDO以加深理解

30044 学习 · 397 问题

查看课程

相似问题