【问题标题】:mysqli binding with blank spaces [duplicate]带有空格的mysqli绑定[重复]
【发布时间】: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 两个词之间的空格
  • 两台服务器是否使用相同的数据库?您是否在两台服务器上输出查询并确认它实际上是相同的(查看源代码时,而不是浏览器呈现的)?例如如果用&amp;252; 查询并且DB 有ü 你不会得到结果。也不要引用,驱动是这样做的,多余的引号会导致不匹配。

标签: php mysql mysqli


【解决方案1】:

如前所述,元音变音是问题所在。为了能够使用它们,设置:

php.ini:

default_charset = "UTF-8"

Web 服务器的配置文件(此处为 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 了解更改相应设置的其他说明和模式。

祝你好运!

【讨论】:

  • 这怎么可能?该侧与“元音变音”没有任何问题的一侧位于同一网络空间。他们正在使用相同的数据库,该数据库已经以 UTF-8 编码
  • 实际上你不需要做这一切。唯一重要的是: 1. 数据库中的数据是否正确,即它实际上存储的是“ü”而不是其他垃圾吗?列编码甚至无关紧要。 2. 您是否从网络浏览器收到“ü”,而不是其他垃圾? 3.您是否向数据库发送“ü”,即连接数据库时声明的连接编码中字符“ü”的正确字节?
  • 我只是把“ü”换成了ue,问题依旧存在....
  • @Joseliese 那么该字符串的其他部分不匹配......
  • @deceze,数据正确,我正在接收“ü”并将“ü”发送到数据库。检查了所有这些
猜你喜欢
  • 2010-10-04
  • 2015-11-07
  • 1970-01-01
  • 2010-09-21
  • 2021-09-05
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多