2015-07-11 52 views
0

好吧,我在這裏有一個非常古怪的問題。我試圖通過PHP選擇一行,但由於某種原因,它只是不會抓住行數據!它沒有任何問題獲取數字行或任何東西。PHP準備的狀態 - 無法選擇Varchar行,沒有問題選擇數字行

注意:我通過C#WinForm發送參數,這可能是問題的原因(排序規則或其他)?

$stmt_GetSalt = $con->prepare("SELECT Salt,Status FROM Accounts WHERE Email=?"); 
$stmt_GetSalt->bind_param("s", $email); 
$stmt_GetSalt->execute(); 
$stmt_GetSalt->bind_result($salt, $status); 
$stmt_GetSalt->fetch(); 
$stmt_GetSalt->close(); 

狀態是int,但沒有問題返回值。鹽是varchar但沒有數據正在返回。這裏發生了什麼?

編輯:XML表中的數據表示。

<table name="Accounts"> <column name="Email">[email protected]</column> <column name="Password">65T6ANoLeSrBA</column> <column name="Salt">65fe93d93e283f002beaca712fd178c6</column> <column name="PIN">81dc9bdb52d04dc20036dbd8313ed055</column> <column name="Status">0</column> <column name="ID">5</column> </table>

編輯2:固定的問題。我在實例化$email後綁定params。所以該聲明試圖綁定一個尚不存在的參數。我不應該在深夜編碼。

+0

什麼是在表中,而不是你有什麼麻煩出去。表中有什麼,而不是表 – Drew

+0

中的內容[這是表格內容的圖像](http://i.imgur.com/Rpb7k6g.png)。 – Marooca

+0

發佈有問題的文本示例。人們不想點擊這裏的驚喜 – Drew

回答

0

修復了這個問題。我正在綁定參數後實例化$ email。所以該聲明試圖綁定一個尚不存在的參數。我不應該在深夜編碼。

+0

沒有冒犯,但這聽起來不像實際的問題/解決方案。 a)這不能解釋爲什麼你可以獲取一列而不是另一列,b)首先綁定變量,然後賦值作品,沒問題 – VolkerK

+0

它在我放置'$ email = $ _POST [「email」之後) ;'在聲明之前。 – Marooca

+0

所以你的意思是你在execute()之前沒有給$ mail分配_any_值。仍然不能解釋你如何獲取字段「狀態」,但無論如何... – VolkerK

1

我不能重現該問題

<?php 
mysqli_report(MYSQLI_REPORT_STRICT); 
$mysqli = new mysqli('localhost', 'localonly', 'localonly', 'test'); 
setup($mysqli); 
var_export(foo($mysqli, '[email protected]')); 

function foo($con, $email) { 
    $stmt_GetSalt = $con->prepare("SELECT Salt,Status FROM soFoo WHERE Email=?"); 
    $stmt_GetSalt->bind_param("s", $email); 
    $stmt_GetSalt->execute(); 
    $stmt_GetSalt->bind_result($salt, $status); 
    $stmt_GetSalt->fetch(); 
    $stmt_GetSalt->close(); 
    return array('salt'=>$salt, 'status'=>$status); 
} 

function setup($mysqli) { 
    $mysqli->query(' 
     CREATE TEMPORARY TABLE soFoo (
      Salt varchar(32), 
      Status int, 
      email varchar(32) 
     ) 
    '); 

    $mysqli->query(" 
     INSERT INTO soFoo (Salt,Status,email) VALUES 
     ('65fe93d93e283f002beaca712fd178c6', 0, '[email protected]') 
    "); 
} 

打印

array (
    'salt' => '65fe93d93e283f002beaca712fd178c6', 
    'status' => 0, 
) 

預期。