0
どのように$ 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がリソースになることを期待しています。' リンクを定義するようにコードをリファクタリングしましたが、どういうわけか問題が発生しています。
[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接続が呼び出されると設定されます。mysql connectがcdb.php内で呼び出されたときに未定義の場合は、 " $ linkを取得するこのメソッドは、私が持っている別のクラスでは完全に動作しますが、なぜここでは動作しないのか分かりません。 – YoYoMa
connectDB()メソッドをポストします(パスワードは省略します)。 – jka6510
ああ、グローバル変数は、次に追加します:グローバル$リンク; queryDB()関数の先頭に移動します。 – jka6510