Mysql usul ve PHP veritabanı bağlantısı ile garip bir sorun

3 Cevap php

Ben prosedürlere devredilen iki tamamen ayrı sorgu var. Onlar ad-hoc sorgular iken, onlar büyük koştu ama şimdi bunları sakladığınız, garip şeyler aldık.

PHP procs birinin değerlerini döndüren bir sınıf yöntemini çağırır. İkinci yöntem daha sonra aradı ve başarısız olur. Ben kaçak PHP komut satırından doğrudan bana vermek için başarısız proc çalıştırdığınızda, gayet güzel bana sonuçlar verir. Bu kesinlikle garip.

Ben bir şey eksik eğer birisi bana söyleyebilir misiniz? Ben bazı kod göndermek için mutlu olurdu ama zaman çıkarına, ben sormak ve bu ilk ortak bir sorun olup olmadığını görmek düşündüm.


Bu bağlayan bir fonksiyondur;

function connect()
{
    $conn = mysql_connect($host, $user, $pass);
    if(!$conn){
        echo 'Error: cannot connect';
    }else{
        $selectDB();
    }
}

Bu başarısız proc:

BEGIN
SELECT name FROM source ORDER BY name ASC;
END

Bu sonuçlar döndürür ilk proc.

BEGIN
SELECT cpw, cpw_id FROM cpw ORDER BY cpw ASC;
END

3 Cevap

Kodunu görünce daha özel yardım için izin verir, ancak bağlantı kimlik üzerine yazmasını olabilir procs değişken adı çatışmaların attınız?

İlk görme kodu olmadan, bunu söylemek zor. Ben bu olsa normal bir davranış olmadığını size temin ederim. OP Yorumlarınız itibaren, kullanıcı-kimlik sonra ilk sorgu başarısız olduğu görünüyor. Ben hiçbir şey yazmadan, ya da istekler arasında yine onları değiştirerek emin olmak için kontrol.

Bu noktada, bu bağlantıyı yapar parça kod ve yordamlara için aramaları görmek için yararlı olacaktır.

Durumda function connect() gönderdiniz size PHP's variable scope (ve ömür) ile bir "sorun" olan, gerçek kod (ve SO için kısaltılmış bir versiyonu) olduğunu. $ Host, $ user ve $ parola işlevi içinde bilinmemektedir. Yani etkili mysql_connect(null, null, null); yürütülen ve php-mysql uzantısı ini parametrelerinin mysql.default_host, mysql.default_user ve mysql.default_password accrding varsayılan bağlantı kurmak için çalışır .

Eğer E_ALL raporlama hata ayarlarsanız (örn. error_reporting(E_ALL) önce işlev çağrısı için) bazı "tanımsız değişken" mesajı almalısınız.