나는 mysql db에 저장된 페이지를 가지고 있으며, 필드 중 하나는 사이트 검색을 돕기를 원했던 각 페이지에 대한 태그 배열이다. 내 호출에 의해 발생하는 오류를 받고 있어요"Like"로 MYSQL 필드 배열 가져 오기
... 같은
$results = $db->select('pages','','','name',array('name', 'DESC'),'10',array('tags', '%' .$word. '%'));
(선택 작품 - '테이블', '', '어디 검색어 검색에 대한 바인드', ' fields ','orderby array ','limit ', where/like array')
'태그'필드에 배열 문제가 있다고 생각합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 필요한 경우, 나는 각각의 당기하고있어 쿼리 이후로 지금까지 결과 :
경고 :
//if we got something through $_POST if (isset($_GET['search'])) { // here you would normally include some database connection require_once('../config/dbconfig.php'); // never trust what user wrote! We must ALWAYS sanitize user input //$word = mysql_real_escape_string($_POST['search']); $word = htmlentities($_GET['search']); // build your search query to the database //$sql = "SELECT title, url FROM pages WHERE content LIKE '%" . $word . "%' ORDER BY title LIMIT 10"; $results = $db->select('pages','','','*',array('name', 'DESC'),'10',array('tags', '%' .$word. '%')); // get results if (count($results) > 0) { $end_result = ''; echo '<ul>'; foreach($results as $row) { $bold = '<span class="found">' .$word. '</span>'; $end_result .= '<li>' .str_ireplace($word, $bold, $row['title']). '</li>'; } //echo $end_result. '</ul>'; }else { //echo '<ul><li>No results found</li></ul>'; } var_dump($results); exit; }
그것은 오류가 내 foreach 문에 말했다의 foreach에 대한 공급 잘못된 인수()
언제나 지금까지 내 쿼리로 인해서 왔습니다. 매번.
내가 찾지 못했다면 특별히 검색된 내용이 없습니다. 놓친 경우 매우 유감입니다. 또한 피곤해서 일부 정보를 놓친 경우 알려 주시면 게시 해 드리겠습니다. 감사!
선택을 실행하기 전에 선택이 처리되는 방식입니다.
public function select($table, $where="", $bind="", $fields="*", $order="", $limit="", $like="") {
$sql = "SELECT " . $fields . " FROM " . $table;
if(!empty($where)) {
$sql .= " WHERE " . $where;
}
if (!empty($order)) {
$sql .= " ORDER BY " . $order[0] . " " . $order[1];
}
if (!empty($limit) && is_array($limit)) {
$sql .= " LIMIT " . $limit[0] . " " . $limit[1];
}
if (!empty($limit)) {
$sql .= " LIMIT " . $limit;
}
if (!empty($like)) {
$sql .= " WHERE " .$like[0]. " LIKE " . $like[1];
}
$sql .= ";";
//var_dump($sql);
//var_dump($bind);
//exit;
return $this->run($sql, $bind);
}
public function run($sql, $bind="") {
$this->sql = trim($sql);
$this->bind = $this->cleanup($bind);
$this->error = "";
try {
$pdostmt = $this->prepare($this->sql);
if($pdostmt->execute($this->bind) !== false) {
if(preg_match("/^(" . implode("|", array("select", "describe", "pragma")) . ") /i", $this->sql))
return $pdostmt->fetchAll(PDO::FETCH_ASSOC);
elseif(preg_match("/^(" . implode("|", array("delete", "insert", "update")) . ") /i", $this->sql))
return $pdostmt->rowCount();
}
} catch (PDOException $e) {
$this->error = $e->getMessage();
$this->debug();
return false;
}
}
은 (대신 URL로 페이지에 직접했다 그래서, $ _GET B/검색 c를 AJAX를 사용하고 물건을 그냥 전화 한 무리의 변경과 같은 느끼지 않았다로 전환.)
난 그냥 제거 해당 쿼리 편집에나노, 그것은 바로 처음 ... 죄송합니다 피곤 ...
태그 필드가 배열이라는 것은 무엇을 의미합니까? 배열은 MySQL에서 유효한 열 유형이 아닙니다. – jcsanyi
또한 어떤 유형의 객체가'$ db'입니까? 나는'select()'메소드를 가진 것에 익숙하지 않다. – jcsanyi
용어가 틀린 것 같습니다. '태그'라는 이름의 테이블에있는 필드 중 하나의 예가 'about, mission, what, is, imengine, studio'입니다. 나는 정말로 그것의 주석이있는 문자열을 추측한다. $ db는 데이터베이스와의 연결을 시작하기 위해 만들어진 객체입니다. 매우 싫어하는 포장지를 사용하여 연결을 유지합니다. 그것은 많은, 내가 가진 많은 다른 쿼리와 잘 작동합니다. – Grant