MySQL只选择领域的第一个词

时间:2018-06-25 22:11:14

标签: php html mysql mysqli

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

$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自动使用空格定界符来分隔列中的值。有没有办法获取整个列?预先感谢。

2 个答案:

答案 0 :(得分:3)

您的代码

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

答案 1 :(得分:0)

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