mysqli与空格

时间:2017-10-10 12:42:16

标签: php mysql mysqli

我有一个网站,通过SQL查询显示信息。这工作得很好,除非其中一个参数是带空格的字符串。

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”一样,它完美地运作。但是“Metakognitives Training - UmgangmitGrübelnundSorgen”不起作用 - 在查询中没有错误,它只是找不到合适的行。写作中没有错误,同一个查询正在另一个网站上运行。所以我真的不明白这个问题。

我尝试使用引号

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

没有帮助。我希望你能提供帮助。

1 个答案:

答案 0 :(得分: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,char,text等):

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

从理论上讲,这些字段会从表中继承编码和排序规则。

另外,请参阅this answer了解更改相应设置的其他说明和模式。

祝你好运!