我有一个网站,通过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']."'";
没有帮助。我希望你能提供帮助。
答案 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了解更改相应设置的其他说明和模式。
祝你好运!