2012-06-22 29 views
0

我嘗試了不同的方法,它們都不起作用。當我在MySQL控制檯中嘗試命令時,它可以正常工作,但是當我在這個PHP腳本中嘗試它時,它會向我發回一個空字符串。在數據庫中查找具體值php

如果我去到MySQL控制檯並運行:

SELECT item_path FROM items WHERE item_title = "word1" 

我得到我期待的item_path,但由於某種原因,我的腳本,它返回一個空字符串。

非常感謝您的幫助(如果有的話)!

編輯:

// Wraps data in "" for mysqli query 
    $data2 = "\"" . $data . "\""; 

    // Binding here still doesn't work even after changing the var 
    $search->bind_param("s", $data2); 

我累了更改綁定到另一個變量,但我仍然得到一個空字符串。我不確定是否因爲我錯誤地封裝了數據或者是否有其他原因。我一直在尋找這樣的事情發生,而我一無所獲。

+0

在執行查詢之前,您可以嘗試將$ img_path設置爲默認值。這會告訴你綁定是否失敗,或者它是否成功並寫入空白字符串。 – octern

+0

啊,一個好主意,我只是試過,是的,它返回一個空字符串。這讓我覺得我查錯了,但我不確定如何正確引用一個項目。我很確定我做錯了。 – Digikid13

+0

嘗試運行它,而不將數據封裝在引號中。引用不應該是準備好的查詢所必需的。實際上,我認爲向字符串添加引號會導致SQL搜索其中有引號的字符串,這可能是您查詢失敗的原因。 – octern

回答

1

您將您的語句綁定在該子句之外,並且從不使用您更改的$data

$search = $mysqli->prepare("SELECT item_path FROM items WHERE item_title = ?"); 

while (array_key_exists($i, $parts)) { 
    // An array that contains (word1, word2, word3) 
    $data = $parts[$i]; 

    // Wraps data in "" for mysqli query 
    $data = "\"" . $data . "\""; 

    // Bind it here instead! 
    $search->bind_param("s", $data); 

    // This should execute the above prepare and give me the data 
    $search->execute(); 
    $search->bind_result($img_path); 
    $search->fetch(); 

    // This returns an empty string 
    echo $img_path; 
    echo "<img src= \"", $img_path, "\" >"; 

    $i++; 
} 
+0

我試圖綁定它在while循環內,它仍然無法正常工作。我也使用$ search-> execute();應該使用已更改的$數據。 – Digikid13

+0

考慮到你和octern的建議,它的工作,所以謝謝。 – Digikid13