2009-07-25 5 views
1

Вот моя проблема: у меня есть класс с ave-методом, я хочу передать ссылку Mysql DB, поэтому я создаю новый объект из класса и вызываю метод saveProperty , и в моем основном файле я создал соединение MySQL и сохранил ссылку в var под названием $ db, поэтому, когда я вызываю метод, это ссылка this: saveProperty ($ db).передать ссылку MySQL методу класса

но InstEd сохранения данных я получаю сообщение об ошибке:

Предупреждение: mysql_select_db(): поставляется аргумент не является допустимым ресурсом MySQL-Link в C: \ WAMP \ WWW \ aqaria \ Classes \ property.php на линии 75

Предупреждение: mysql_query(): поставляется аргумент не является допустимым ресурсом MySQL-Link в C: \ WAMP \ WWW \ aqaria \ Classes \ property.php на линии 99

, что означает, что я Ждут Не пропустите ссылку? но как?

вот некоторые из моего кода:

<?php 

    class test 
    { 




    function saveProperty($db) 
    { 

     $sql = "<<query goes here>>" 

     mysql_query($sql,$db); 

     if(mysql_affected_rows()>0) 
     echo "<h3>Data was saved</h3>"; 
     else 
     echo "<h3>Error saving data</h3>"; 

    } 


    } 

здесь код вызова:

$db = mysql_connect('localhost','root',''); 
mysql_select_db("aqaria",$db); 
$property = new Property(); 
$property->saveProperty($db); 

хотя он будет работать, если я добавил глобальные последовательность ключевых слов, чтобы метод класса я задавался вопрос, если Я могу ПРОСИТЬ ссылку на соединение с базой данных?

+1

Вы также можете вставить код вызова? – deceze

+0

$ db = mysql_connect ('localhost', 'root', ''); mysql_select_db ("aqaria", $ db); $ property = новое Property(); \t \t \t $ property-> saveProperty ($ db); – Thamood

+1

* Кашель * Можете ли вы также вставить код вызова ... ** в свой вопрос **? – deceze

ответ

0

Пытались ли вы с ссылкой?

Кроме того, вы можете использовать $ дб в mysql_affected_rows()

function saveProperty(&$db) 
{ 

    $sql = "<<query goes here>>" 

    mysql_query($sql,$db); 

    if(mysql_affected_rows($db)>0) 
    echo "<h3>Data was saved</h3>"; 
    else 
    echo "<h3>Error saving data</h3>"; 

} 
+0

ранее я использовал «&» в вызове save Property и это не сработало, теперь, когда я использовал его в объявлении функции, все прошло отлично thanx jake – Thamood

0

У вас нет объекта базы данных в вашей функции.

Добавьте это в верхней части:

global $db; 

Edit: передать его в функцию вы могли бы сделать это:

$db = mysql_connect('localhost','root','') or die(mysql_error()); 
mysql_select_db("aqaria", $db) or die(mysql_error()); 

agar_add_offer($someDataFromSomewhere, $db); 

function aqar_add_offer($data, $db) 
{ 
    $property = new Property(); 

    //do some data manipulation 

    $property->saveProperty($db); 
} 
+0

ОК это сработало thanx, я новичок в OOP в php, так что дайте мне простое объяснение? – Thamood

+0

, но это только доступ к глобальному $ db var, как я могу передать ссылку на метод без использования глобального var? – Thamood

+0

Вы передали бы его в качестве аргумента функции – Greg

1

Это, без сомнения, можно пройти db_links вокруг методов.

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\aqaria\classes\property.php on line 75

Проверьте вас учетные базы данных и выход с mysql_error()

0

Я просто использовать глобальный $ дб в каждом методе класса мне нужно использовать MySQL. $ db определяется вне класса.

Есть ли способ, которым я не должен использовать 'global $ db' также в каждом методе.

Смежные вопросы