【问题标题】:MySQL only selecting first word of fieldMySQL 只选择字段的第一个单词
【发布时间】:2018-06-25 22:11:14
【问题描述】:

我正在尝试这样填充表单:

$email = $_SESSION["email"];
$result = $mysqli->query("SELECT * FROM patient WHERE email = '$email'");
$user = $result->fetch_assoc();
$firstName = $user["firstName"];
$lastName = $user["lastName"];
$bday = $user["bday"];
$address1 = $user["address1"];
$address2 = $user["address2"];
$city = $user["city"];
$state = $user["state"];
$zipCode = $user["zipCode"];
$phone = $user["mobilePhone"];
$contactMethod = $user["contactMethod"];
$reminders = $user["reminders"];
$updates = $user["updates"];

然后我会像这样使用 echo:

<input type="text" name="address1" <?php echo 'value=' . $address1; ?> required />

它适用于除所示字段之外的所有字段。它只获取该列的第一个单词。例如,“123 First Street”仅将输入字段填充为“123”。如果我删除空间并将列值设置为“123FirstStreet”,则整个内容都会填充。所以我猜测 mySQL 会自动使用空格分隔符来分隔列中的值。有没有办法获取整列?提前致谢。

【问题讨论】:

标签: php html mysql mysqli


【解决方案1】:

你的代码

<input type="text" name="address1" <?php echo 'value=' . $address1; ?> required />

会生成一个不正确的html标签:

<input type="text" name="address" value=123 First Street  required />

试试改成:

<input type="text" name="address" value="<?php echo $address; ?>" required />

避免此类错误的最佳做法是在插入 php 代码之前先编写完整的 html 模板/标签。

更新

正如@user2864740 所指出的,最好将输入字符串中出现的特殊字符转换为HTML 字符实体的形式。

<input type="text" name="address" value="<?php htmlentities($address1); ?>" required />

【讨论】:

  • @user2864740,数据转义不是 OP 要求的,也不是这个问题或问题的一部分。
【解决方案2】:

MySQL 没有使用任何空格分隔符,请检查您数据库中填充的数据以及您可能打错的INSERT 方法。

【讨论】:

  • 问题是当字段包含空格(或几乎任何非字母数字字符)时,它会生成无效的 HTML。数据库“可能”已经包含正确的数据
  • 数据库有正确的数据。有没有办法绕过无效的html?喜欢选择单个单词并像 $word1 一样手动将它们分开。 ' ' 。 $word2 。 ' ' 。 $word3
  • @AdamJohnston 试试 var_dump($user) 你可能会发现缺少什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2010-09-07
  • 2022-01-09
  • 2010-10-15
  • 2014-08-24
相关资源
最近更新 更多