MYSQL UPDATE只添加两个句点

时间:2014-02-20 22:58:52

标签: php mysql

这可能是我错过的一些蠢事,但我无法弄明白。我有一个只有一个文本字段的表单,用于更新MySQL数据库中特定行的列。我是通过PHP做到这一点的。它正在更新正确行中的正确列,但是它没有输入变量,而只是输入2个句点“..”它应该根据$_SESSION['Username']更新用户行中的firstName列,并且应该是获取用户在firstName字段中输入的任何文本以插入firstName列。不知道为什么会这样做。任何帮助都会很棒! :d

userProfileCreate.php

<?php session_start(); ?>
<?php include "header.php"; ?>
<?php include "mainNav.php"; ?>
<?php
$con=mysqli_connect("localhost","username","password","db_name");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$username = $_SESSION['Username'];

$query = mysqli_query($con, "SELECT * FROM users WHERE Username =  '".$username."'");

while($row = mysqli_fetch_array($query)){
   $firstname = $row['firstName'];
   $lastname = $row['lastName'];
   $age = $row['age'];
   $gender = $row['gender'];
   $location = $row['location'];
   $about = $row['about'];
}

  echo "<div id='profileWrap'>";
  echo "<form action='userProfileSave.php' method='post'>
     First Name: <input type='text' name='firstName' value='" . $firstname. "'>
     <input type='submit'>
     </form>";

?>

<?php include "chat.php"; ?>

userProfileSave.php

<?php session_start(); ?>

<?php
$con=mysqli_connect("localhost","username","password","db_name");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$username = $_SESSION['Username'];
$firstname = mysqli_real_escape_string($_POST["firstName"]);

$sql= "UPDATE users SET firstName = '.$firstname.' WHERE Username = '$username'";


if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

header("Location: userProfileCreate.php");
die();

mysqli_close($con);
?>

3 个答案:

答案 0 :(得分:3)

基本PHP语法:

$sql= "UPDATE users SET firstName = '.$firstname.' WHERE Username = '$username etc..
                                     ^--        ^---

你正在获得句号,因为你的$sql字符串中有句号...看起来你正在尝试进行连接操作,但是忘了关闭字符串。例如你有

$foo = "bar.$baz";

而不是

$foo = "bar" . $baz;

答案 1 :(得分:0)

使用此代码

$sql= "UPDATE users SET firstName = '".$firstname."' WHERE Username = '".$username."'";

答案 2 :(得分:0)

这里有两个问题:

首先,您没有提供与mysqli_real_escape_string()的连接,因此它失败了,没有正确地为$firstname分配值。

$firstname = mysqli_real_escape_string($con, $_POST["firstName"]);
                                       ^^^^

其次,您似乎尝试连接,但没有正确关闭字符串,因此两个连接运算符出现在您的数据库中:

$sql= "UPDATE users SET firstName = '".$firstname."' WHERE Username = '$username'";
                                     ^            ^