首页 > 解决方案 > MySQL 只选择字段的第一个单词

问题描述

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

$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"];

然后我使用这样的回声:

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

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

标签: phphtmlmysqlmysqli

解决方案


你的代码

<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 />

推荐阅读