경고 : mysql_fetch_array () : 제공된 인수가 유효한 MySQL 결과가 아닙니다.
PHP경고 : mysql_fetch_array () : 제공된 인수가 유효한 MySQL 결과가 아닙니다.
이 오류를 실행하려고하면 오류가 발생합니다.
<?php
require_once('includes/DbConnector.php');
$connector = new DbConnector();
$result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100');
// Get an array containing the results.
// Loop for each item in that array
while ($row = $connector->fetchArray($result)){
echo $row['title'].'</h3>';
echo $row['content'];
}
?>
링크 된 파일이 있습니다. DbConnector.php :
<?php
////////////////////////////////////////////////////////////////////////////////////////
// Class: DbConnector
// Purpose: Connect to a database, MySQL version
///////////////////////////////////////////////////////////////////////////////////////
require_once 'SystemComponent.php';
class DbConnector extends SystemComponent {
var $theQuery;
var $link;
//*** Function: DbConnector, Purpose: Connect to the database ***
function DbConnector(){
// Load settings from parent class
$settings = SystemComponent::getSettings();
// Get the main settings from the array we just loaded
$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpassword'];
//the settings
$host = 'localhost';
$db = 'xxx';
$user = 'xxx';
$pass = 'xxx';
// Connect to the database
$this->link = mysql_connect($host, $user, $pass);
mysql_select_db($db);
register_shutdown_function(array(&$this, 'close'));
}
//*** Function: query, Purpose: Execute a database query ***
function query($query) {
$this->theQuery = $query;
return mysql_query($query, $this->link);
}
//*** Function: getQuery, Purpose: Returns the last database query, for debugging ***
function getQuery() {
return $this->theQuery;
}
//*** Function: getNumRows, Purpose: Return row count, MySQL version ***
function getNumRows($result) {
return mysql_num_rows($result);
}
//*** Function: fetchArray, Purpose: Get array of query results ***
function fetchArray($result) {
return mysql_fetch_array($result);
}
//*** Function: close, Purpose: Close the connection ***
function close() {
mysql_close($this->link);
}
}
?>
아무도 문제가 뭔지 알고 있습니까?
해결법
-
==============================
1.
조회 결과에 $ result가 유효하지 않은 자원이되는 문제점이 있어야합니다.
쿼리를 실행하는 줄 다음에 mysql_error ()를 확인해보십시오.
편집하다:
사실 DBConnector 클래스 함수 query ()를 다음과 같이 변경하여 잘못된 쿼리가있을 때 식별 가능한 오류가 발생합니다.
function query($query) { $this->theQuery = $query; $queryId = mysql_query($query,$this->link); if (! $queryId) { throw new Exception(mysql_error().". Query was:\n\n".$query."\n\nError number: ".mysql_errno(); } return $queryId; }
-
==============================
2.
이 오류는 쿼리가 실패했음을 의미합니다. mysql_query ()는 에러가 발생하면 false를 반환하고, 에러 메시지를 발생시키는 mysql_fetch_array ()에 false를 전달한다.
누락 된 / 잘못된 테이블 또는 필드로 인해 쿼리가 실패 할 수 있습니다. 자세한 오류를 보려면 mysql_error ()의 결과를 출력하십시오.
mysql_ * 라이브러리는 더 이상 사용되지 않습니다. MySQLi 또는 PDO로 업그레이드하는 것이 좋습니다.
-
==============================
3.
// Load settings from parent class $settings = SystemComponent::getSettings(); // Get the main settings from the array we just loaded $host = $settings['dbhost']; $db = $settings['dbname']; $user = $settings['dbusername']; $pass = $settings['dbpassword']; //the settings $host = 'localhost'; $db = 'xxx'; $user = 'xxx'; $pass = 'xxx';
연결 바의 재 지정을 원하셨습니까? 아니면 몇 줄의 스텁 코드를 꺼내는 걸 잊었습니까? 또는 $ 설정에 포함 된 것을 보여주는 예가 무엇입니까?
-
==============================
4.
mysql_error ()에서 에러를 제공하십시오. 그게 아니라면 ... 필드 이름을 벗어나려고?
$result = $connector->query('SELECT `title`,`content` FROM `staff_vacancies` ORDER BY `ordering` LIMIT 0,100');
-
==============================
5.
조회 결과에 $ result가 유효하지 않은 자원이되는 문제점이 있어야합니다.
이것을 사용하십시오
<?php require_once('includes/DbConnector.php'); $connector = new DbConnector(); $result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100'); // Get an array containing the results. // Loop for each item in that array if($result){ while ($row = $connector->fetchArray($result)){ echo $row['title'].'</h3>'; echo $row['content']; } } ?>
-
==============================
6.
나는 내 문제를 해결하기 위해 이것을 게시물에서 찾았다. Slds.
예, 대답은 간단합니다. 사용 된 쿼리는 말 그대로 getrow 내부의 쿼리이기 때문에 실제 결과가 아닙니다. 수정 사항은 다음과 같습니다. 다음과 같은 줄을 모두 찾으십시오.
mysql_fetch_array(mysql_query("...snip...";-) );
그리고 앞에 "@"를 추가하면 다음과 같이 보입니다.
@mysql_fetch_array(mysql_query("...snip...";-) );
다음 줄에 똑같은 일을하십시오. 암호:
mysql_num_rows(mysql_query("...snip...";-) );
위와 같은 단계를 수행하여 "@"을 다음과 같이 추가하십시오.
@mysql_num_rows(mysql_query("...snip...";-) );
이 모든 것은 "yyy에서 xxx를하는 동안"이라고 말합니다. 그렇지 않으면 누락 된 결과 값으로 인해 죽었습니다. 그것은 PHP의 것입니다 ..
매력처럼 작동하고, 전체 코드를 찢어 내고 Modernbill에 모두 끼워 넣기 위해 5 분이 걸렸습니다. 동일한 데이터베이스를 공유하고 완벽하게 작동합니다.
from https://stackoverflow.com/questions/795746/warning-mysql-fetch-array-supplied-argument-is-not-a-valid-mysql-result by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
PHP 메일 ()로 첨부 파일을 보내시겠습니까? (0) | 2018.09.02 |
---|---|
예를 들어 PHP에서 1 일 전, 2 일 전에 타임 스탬프를 시간으로 변환하는 중 ... (0) | 2018.09.02 |
A 요소의 href 속성 가져 오기 (0) | 2018.09.02 |
참조 - PDO에 대해 자주 묻는 질문 (0) | 2018.09.02 |
다차원 배열을 단순화하는 방법? (0) | 2018.09.02 |