Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
merhaba arkadaşlar. aşağıdaki php kodunda bir hata veriyor. hatayı bu kısımda gösteriyor. " return(&conn); "
sebebi ne olabilir. çözemedim bir türlü.
parametreler doğru. fakat conn da bir hata var yine algılayamadım.
public function getConnection()
{
if($this->conn == "")
{
$conn = mysql_connect(HOST,USR,PSW);
mysql_select_db(DB);
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';");
$this->conn = $conn;
}
return($conn);
}
|
|
Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
Notice: Undefined variable: conn in C:wampwwwdenemedb.php on line 20
merhaba
HATA YUKARIDAKİ GİBİ. "merhaba" yazısını database den alıyor. bağlantıda bir sorun olsa merhaba yazısı çıkmaz diye düşünüyorum.
|
|
Yazar |
|
fonemi
Kayıt: 09.01.2007 |
|
return $this->conn olmalı
|
|
Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
evet. "this" ekleyince o hata kayboldu.
fakat şimdi başka bir yerden kaynaklı mantıksal hata var gibi geliyor.
teşekkürler.
|
|
Yazar |
|
mrflz
Luleburgaz
admin
Kayıt: 15.06.2006 |
|
<?php
//database bağlantı sınıfı
class Database {
private $db_host = DB_SERVER; //DB Host
private $db_user = DB_SERVER_USERNAME; //DB User
private $db_pass = DB_SERVER_PASSWORD; //DB Password
private $db_name = DB_DATABASE; //DB Name
private $con = FALSE; //Control of connection
private $result = array(); //results of SQL queries
function Connect () {
if(!$this->con){ //if $con is false, state is true
$con_mysql = @mysql_connect($this->db_host, $this->db_user, $this->db_pass );
if($con_mysql) { //if mysql is connected
$con_db = @mysql_select_db($this->db_name);
if($con_db) { //if db is selected
$this->con = TRUE;
@mysql_query("SET NAMES 'utf8'");
@mysql_query("SET CHARACTER SET utf8");
@mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");
session_start();
return TRUE; //if db is selected the connection is OK
} else {
return FALSE; //db is not selected
}
} else {
return FALSE; //mysql is not connected
}
} else {
return TRUE; //$con is false, so return true
}
}
function Disconnect() {
if($this->con) { //if connection is open
if(@mysql_close()) { //if the connection is closed down
$this->con = FALSE; //the status of the connection is reseted
$this->result = null; //the result value of the queries is free
$this->connect();
$this->db_name = DB_DATABASE;
return TRUE; //return TRUE
} else {
return FALSE; //return FALSE
}
}
}
}
?>
I see the ghosts of navigators but they are lost
|
|
Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
teşekkürler tekrardan
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
public function getConnection()
{
if($this->conn == "")
{
$conn = mysql_connect(HOST,USR,PSW);
mysql_select_db(DB);
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';");
$this->conn = $conn;
}
return($conn);
}
Burada $conn değişkenini if bloğu içinde tanımladığın için dışarıda "Undefined variable" uyarısı alıyorsun. Değişkeni if bloğundan önce tanımlaman gerekiyor ($conn=false; gibi). Hatanın teknik açıklaması bu. Fakat algoritmik açıdan zaten fenomi'nin dediği gibi return($this->conn) şeklinde olması gerekiyor.
@mrflz
session_start() fonksiyonunun veritabanı bağlantısı içinde çağrılmaması daha uygundur. Özel bir session handler kullandığınızda karışıklık yaratabilir. Bir de Disconnect() metodunun içinde neden tekrar Connect() çağrılıyor?
Bu arada tek bir instance'ı olması gereken class'lar için singleton pattern kullanmanızı öneririm.
Let`s make this world a better place to live !
|
|
Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
arkadaşlar. sorunumu çözdüm.
hata veriyor dediğim kısım gibi bir çok hata aldım. Fakat dosyaları olduğu gibi bir linux servere aktarıp çalıştırdığımda bu hataların hiç birini vermedi. yani bu hataları sadece benim bilgisayarımda veriyor.
hatalardan biri, bu başlıktaki ilk sorumdu. onun dışında kendi bilgisayarımda localhostta çalışırken değişkenlerimde hata vermemesi için en başta hepsine false ataması yapıyodum. ama host üzerinde bu hatayı vermedi.
diğer bir hata verdiği kısım ise " session_start() "
" A session had already been started - ignoring session_start() in C:wampwww ..... " hatası idi.
bunun sebebi ne olabilir. bu benim diğer projeler içinde kendi bilgisayarımda çalışmama engel gibi görünüyor.
biri yardım etsin
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
cguzel yazdi | arkadaşlar. sorunumu çözdüm.
hata veriyor dediğim kısım gibi bir çok hata aldım. Fakat dosyaları olduğu gibi bir linux servere aktarıp çalıştırdığımda bu hataların hiç birini vermedi. yani bu hataları sadece benim bilgisayarımda veriyor.
hatalardan biri, bu başlıktaki ilk sorumdu. onun dışında kendi bilgisayarımda localhostta çalışırken değişkenlerimde hata vermemesi için en başta hepsine false ataması yapıyodum. ama host üzerinde bu hatayı vermedi.
diğer bir hata verdiği kısım ise " session_start() "
" A session had already been started - ignoring session_start() in C:wampwww ..... " hatası idi.
bunun sebebi ne olabilir. bu benim diğer projeler içinde kendi bilgisayarımda çalışmama engel gibi görünüyor.
biri yardım etsin |
PHP hata denetimi konfigürasyonlarından kaynaklanıyor. Kendi bilgisayarında error_reporting = E_ALL | E_STRICT olarak ayarlanmıştır. Internetteki sunucular genellikle sadece yüksek seviyeli hataları print etmek üzere konfigüre edilmiştir. Yoksa senin hatalarını başkaları da tespit edebiliyorsa bu saldırganlar için bir avantajdır.
Let`s make this world a better place to live !
|
|
Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
peki bunu değiştirmek gereklimi.
benim için bir sorun teşkil edermi tam olarak.
hangisine göre kendimi ayarlamalıyım.
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Senin bir şeyleri değiştirmene gerek yok, bu olay sadece hata mesajlarının print edilmesi ile alakalı. Yalnızca header gönderen bir fonksiyondan önce olulşabilecek uyarılar ekstradan "cannot modify header information" hatasına neden olabilir. Local'de ignore etmek istediğin uyarılar varsa error_reporting değerini ona göre değiştirebilirsin (Detaylar: http://www.php.net/manual/en/errorfunc.constants.php) Ben local'de "E_ALL | ~E_NOTICE" değerini tercih ederim. Ama PHP'de yeni olanlar için "E_ALL | E_STRICT" daha uygundur.
Let`s make this world a better place to live !
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | |