Bir mysql sorgunun içeriğini, sadece ilk alan eserlerinin sergilendiği

3 Cevap php

Ben php ile bir mysqli prepard sorgu kullanıyorum kodu:

$retreiveQuery = 'SELECT username, firstname, lastname FROM USERS WHERE username = ?';

if ($getRecords = $con->prepare($retreiveQuery)) {
    $getRecords->bind_param("s", $username);

    $getRecords->execute();        
    $getRecords->bind_result($username, $firstname, $lastname);

echo "<h1>".$username."</h1>
<p><strong>First Name: </strong>".$firstname."
<p><strong>Surname: </strong>".$lastname."
} else {
print_r($con->error);

Bu oldukça garip. Kullanıcı adınızı görüntülenen tek alandır. Neden diğer sütunlar ciltli / iade edilen olmaz?

Yaparsam

SELECT username, firstname, lastname FROM USERS WHERE username = 'test';

Doğrudan veritabanı, tüm alanları görüntülenir ve tüm geçerli veri içerirler.

3 Cevap

Sen aramak zorunda

$getRecords->fetch();

bind_result() aslında kaydı almak için sonra.

Eğer zaten batmıştı çünkü adı bir giriş parametresi olarak kullanmak, çıkış ediliyordu.

Eğer kullanıcı adı çıkışı için farklı bir değişken adı kullanırsanız ne olur? Bu gibi:

User_name olarak SEÇ adınızı, ad, username = 'test' kullanıcılarından soyad;

ve daha sonra

$ GetRecords-> bind_result ($ kullanıcı_adı, $ ad, $ soyad);

Ben giriş ve çıkış için aynı adı kullanarak bocalama oluyor acaba?

Ben bu çalıştırmak değil, ama, bağlı param ve sınır sonuç değişkeni hem $ username aynı değişkeni kullanmakta olduğunu fark.

Bu sonuç onları HERHANGİ dönen olmadığını olabilir, ama $ username bu veritabanından geliyor çünkü, önceden atama çünkü görüntülenen bir değeri vardır.

$ Param_user ve $ result_user gibi farklı varaibles kullanmayı deneyin ve neler olacağını görün. Benim tahminim sonucu hiçbiri bağlayıcı sorgu veya sonucu ile bir soruna işaret edeceği, iade edilecektir olmasıdır.