어떻게 $ link를 정의 할 수 있는지 궁금합니다. 이것은 내부 클래스 인 cdb.php이며 mysql 연결이 호출 될 때 설정됩니다. 이것이 정의되지 않았다면, mysql connect가 호출되었을 때, 나는 이렇게 코딩했기 때문에 죽을 것이다.명확하게 정의해야하는 PHP 정의되지 않은 변수
<html>
<head>
</head>
<body>
<?php
function justGetCSNumbers($input)
{
$input = preg_replace('/[\D]/',"",$input);
$sp = preg_split("/,/",$input);
$numbs = preg_grep('/^(\d+)(,\d+)*$/',$sp);
$csv = implode(",",$numbs);
#echo $csv;
return $csv;
}
function queryDB($cleaned)
{
$split = preg_split('/,/',$cleaned);
$resAy = array();
for($i=0;$i<count($split);$i++)
{
if((strlen($split[$i])>5)&&(strlen($split[$i])<10))
{
$resAy[$i] = "uid='$split[$i]'";
}
}
if(count($resAy)>0)
{
$q = 'SELECT * FROM userbase WHERE '.$resAy[0];#.$whereclause;
echo '<br/> query: '.$q.'<br/>';
connectDB();
return mysql_query($q,$link) or die("Couldn't complete query ".mysql_error($link));
}
}
function find(){
$p = $_POST['userToQuery'];
if(isset($p))
{
$csv = justGetCSNumbers($p);
$found= queryDB($csv);
}
}
include('cdb.php');
find();
?>
vi를 사용하여 죄송합니다.
내 apache2 오류 로그는 connectDB()를 호출 한 후에도 변수 $ link가 여기에 사용되면 정의되지 않았 음을 보여줍니다. 이 코드는 mysql_connect를 수행하고 따라서 링크를 설정하는 코드이다. 'mysql_error()는 매개 변수 1이 resource가 될 것으로 기대합니다.' 링크가 정의 될 수 있도록 (예 : 내 버전) 코드를 리팩터링했지만 어떻게 든 문제가 있습니다.
[EDIT] 여기 cdb.php 클래스이다
<?php
function connectDB()
{
global $link;
$uname = 'site123';
$pass = 'abc123';
$loc = "localhost";
$link = mysql_connect($loc, $uname, $pass) or die("Couldn't connect to the DB");
$dbname = 'jagrail';
$db = mysql_select_db($dbname,$link);
if(!$db)
{die("Failed to select db");}
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
}
#return $link;
}
?>
이전에 정확한 코드를 사용하고있었습니다. 항상 동일한 오류가 발생했습니다. 위에서 말했듯이 "이 클래스는 cdb.php 클래스의 전역 변수이며 mysql connect가 호출 될 때 설정됩니다. mysql connect가 cdb.php 내부에서 호출 될 때 정의되지 않은 경우이 방법으로 코딩 했으므로 죽을 것입니다 . " $ link를 얻는 방법은 내가 가지고있는 다른 클래스에서 완벽하게 작동합니다. 왜 여기서 작동하지 않는지 모르겠습니다. – YoYoMa
connectDB() 메소드를 게시하십시오 (암호는 생략하십시오). – jka6510
아, 전역 변수 다음 추가 : 전역 $ 링크; queryDB() 함수의 맨 위. – jka6510