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