【发布时间】:2018-03-21 21:09:32
【问题描述】:
我有一个网站,它通过 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>';
}
}
就像我说的:当 $seminar 类似于“Entspannung”时,它可以完美运行。但是“Metakognitives Training - Umgang mit Grübeln und Sorgen”不起作用 - 查询中没有错误,只是找不到合适的行。写作没有错误,同样的查询正在另一个网站上工作。所以我真的不明白这个问题。
我尝试使用引号
echo $seminar = "'".$_POST['Seminar']."'";
这对伊瑟没有帮助。我希望你能帮忙。
【问题讨论】:
-
什么是
blank space? -
空间应该不是问题。更有可能是“ü”由于编码错误处理而搞砸了。
-
由于字符串中有特殊字符
ü,需要在查询中添加utf-8支持!! -
@Marcin Orlowski 两个词之间的空格
-
两台服务器是否使用相同的数据库?您是否在两台服务器上输出查询并确认它实际上是相同的(查看源代码时,而不是浏览器呈现的)?例如如果用
&252;查询并且DB 有ü你不会得到结果。也不要引用,驱动是这样做的,多余的引号会导致不匹配。