2017-10-10 49 views
-1

我有一個網站,通過SQL查詢顯示信息。這工作得很好,除非其中一個參數是一個帶空格的字符串。mysqli與空格綁定

echo $seminar = $_POST['Seminar']; 
echo $start = $_POST['DatumGruppe']; 

$prep_stmt = $mysqli->prepare("SELECT `idtermine` FROM `termine`, seminar WHERE termine.seminar = seminar.idseminar AND seminar.name = ? AND termine.start= ? "); 
$prep_stmt->bind_param('ss', $seminar, $start); 
if (!$prep_stmt->execute()) 
{ 
    echo 'Error executing!'; 
} 

else 
{ 
$prep_stmt->store_result(); 
$prep_stmt->bind_result($termin); 

    if ($prep_stmt->num_rows != 1) 
    { 
    echo '<p class="error">Kein passendes Seminar gefunden</p>'; 
    } 

    while ($prep_stmt->fetch()) 
    { 
     echo 'ID: '.$termin.'<br>'; 
    } 
} 

就像我說的:當$研討會是像「Entspannung」它的完美工作。但是「元認知訓練 - Umgang mitGrübelnund Sorgen」不起作用 - 查詢中沒有錯誤,它只是找不到合適的行。寫作中沒有錯誤,並且相同的查詢正在另一個網站上工作。所以我真的不知道這個問題。

我試着用引號

echo $seminar = "'".$_POST['Seminar']."'"; 

這並沒有幫助eather。我希望你能幫忙。

+0

'空格'是什麼? –

+0

空間不應該是一個問題。由於編碼處理不當,更可能「ü」混亂了。 – deceze

+0

由於字符串中的特殊字符'ü',需要在查詢中添加'utf-8'支持!! – Saty

回答

0

如上所述,Umlaute是問題所在。爲了能夠使用它們,請設置:

的php.ini:

default_charset = "UTF-8" 

Web服務器的cofig文件(這裏設置Apache的httpd.conf文件):

AddDefaultCharset "UTF-8" 

my.ini(或my.cnf):

參見this answer

數據庫:

Encoding: utf8 
Collation: utf8_general_ci 

每個表:

Encoding: UTF-8 Unicode (utf8) 
Collation: utf8_general_ci 

每個字段(VARCHAR,炭,文本等):

Encoding: UTF-8 Unicode (utf8) 
Collation: utf8_general_ci 

理論上,這些字段從表中繼承編碼和整理。

此外,請參閱this answer瞭解更改相應設置的其他指令和模式。

祝你好運!

+0

這是甚麼可能?這邊是位於同一Webspace的側面對於「Umlaute」沒有任何問題,他們使用的是相同的數據庫,它已經用UTF-8編碼了 – Joseliese

+1

實際上,你不需要這麼做,唯一重要的是:1。數據庫中的數據*正確*,即它實際上是否存儲「ü」而不是其他垃圾?列編碼甚至無關緊要。2.您是否從Web瀏覽器收到「ü」,並且n還有其他一些垃圾? 3.您是否向數據庫發送了「ü」,即連接到數據庫時聲明的連接編碼中字符「ü」的正確字節? – deceze

+0

我剛剛用ue替換「ü」,問題依然存在.... – Joseliese