PHP 다중 데이터베이스 문제
-
19-09-2019 - |
문제
아래와 같이 두 개의 데이터베이스 회전을 설정했습니다
$con1 = mysql_connect("localhost", "root", "pwd") or die (mysql_error());
$con2 = mysql_connect("localhost", "wordpress", "pwd", true) or die(mysql_error());
mysql_select_db("lab_ancp", $con1) or die(mysql_error());
mysql_select_db("wordpress",$con2) or die(mysql_error());
그리고 그것은 잘 작동합니다
그러면 다음과 같은 페이지에서 몇 가지 쿼리를합니다.
$sql="select unome from associado where uid=$uid";
$result=mysql_query($sql,$con1) or die(mysql_error());
그리고 그것은 잘 작동합니다. 그 후에는 다음과 같은 두 번째 쿼리를합니다.
$sql="select ID, post_content, post_title, post_excerpt, meta_value
from wp_posts join (
select post_id, meta_value
from wp_postmeta
join (
select post_id from wp_postmeta
where meta_key='destaque' and meta_value='s'
)as t1 using(post_id)
where meta_key='pft_widescreen'
) as t2 on (wp_posts.ID=t2.post_id)
ORDER BY RAND() LIMIT 1";
//echo $sql . "<br />";
$row=mysql_fetch_assoc(mysql_query($sql,$con2)) or die(mysql_error());
그리고 다시 모든 것이 괜찮지 만 ....
$sql="select * from eventos where edatade>='$hoje' or edataate>='$hoje'";
$result=mysql_query($sql, $con1) or die (mysql_error());
이 오류를 준다 :
**
'eventos'에 대한 사용자 'wordpress'@'localhost'에 거부 된 명령 선택
**
해결책 2
잘
해결되었습니다.
그 이유를 묻지 말고 처음 두 개의 행에서 순서를 변경하려고 시도했는데, 즉 $ con2를 $ con2 전에 넣고 이제 쿼리는 단순히 잘 작동합니다.
"True"매개 변수가 그와 관련이 있다고 생각합니다.
thx 얘들 아.
다른 팁
오류에서 EventOS 테이블의 WordPress 사용자에 대한 권한을 확인해야합니다. 귀하의 코드가 정확한 것 같습니다.
이를 확인하려면 두 번째 연결을 사용하여 "Eventos에서 * 선택 *"을 시도해보십시오. 스크립트의 첫 번째 쿼리로이를 수행하십시오.
http://se2.php.net/manual/en/function.mysql-select-db.php#39095 http://se2.php.net/manual/en/function.mysql-select-db.php#93487
mysql_select_db에 문제가있는 것 같습니다. 두 번째 링크는 하나의 솔루션입니다.
PHPS를 사용하는 것이 좋습니다 mysqli (MySQL 개선 확장) 오래된 MySQL 물건 대신 (문제를 해결하는지 모르겠지만 다른 문제를 해결할 수있는 다른 문제를 해결합니다).
그 이유는 연결이 여전히 메모리에 있기 때문에 두 번째 쿼리를 실행하려고 할 때 마지막 연결을 사용합니다. Joomla 두 데이터베이스 사용 문제와 비슷한 문제가 있습니다. 이 문제에 대한 수정 사항을 찾고 있습니다. 코드에서 누락 된 규칙이라고 생각합니다.
야!!! 나는 그것을 얻는다. 문제는 당신이 두 번째 연결을 만들 때, 기본 PHP가 마지막 참조에 대해 동일한 참조를 반환한다는 것입니다. 따라서 새 연결이 필요한 경우 $ new_link를 사용하여 MySQL_Connect를 준비해야합니다.
$myconn = @mysql_connect($this->db2_host,$this->db2_user,$this->db2_pass, true);
마지막 매개 변수는 마지막 참조가 아니라 새로운 참조가 필요하다는 것을 의미합니다. 자세한 정보를 찾을 수 있습니다.
도움이되기를 바랍니다.