【发布时间】:2016-11-25 08:07:53
【问题描述】:
请帮我完成这件事,因为它已经让我发疯了。
我是整个过程的新手,所以对你来说似乎很容易的事情对我来说可能是一场噩梦,不,谷歌没有帮助:(
所以,我有一个名为 member 的 mysql 表,其结构如下:
- mem_id
- 用户名
- 密码
- 名字
- 姓氏
- titlu(标题)
- 描述(描述)
- 喜悦(整数)
- 通讯
我正在使用 execute.php 解析用户详细信息,如下所示:
<?php
session_start();
include('db.php');
$username=$_POST['username'];
$result = mysqli_query($db,"SELECT * FROM member WHERE username='$username'");
$num_rows = mysqli_num_rows($result);
if ($num_rows) {
header("location: index.php?remarks=failed");
}
else
{
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$username=$_POST['username'];
$password=$_POST['password'];
mysqli_query($db,"INSERT INTO member(firstname, lastname, username, password)VALUES('$firstname', '$lastname', '$username', '$password')");
header("location: index.php?remarks=success");
}
?>
现在我有另一个表格,可以插入礼物详细信息,并且必须继续填写 mysql 中的同一行。
我尝试了以下方法,但没有成功:
<?php
session_start();
include('db.php');
$username=$_POST['username'];
$result = mysqli_query($db,"SELECT * FROM member WHERE username='$username'");
$num_rows = mysqli_num_rows($result);
if ($num_rows) {
header("location: index.php?remarks=failed");
}
else
{
$titlu = $_POST['titlu'];
$descriere = $_POST['descriere'];
$joy = $_POST['joy'];
$comm = $_POST['comm'];
$sql = "UPDATE member
SET titlu = '".mysql_real_escape_string($_POST[titlu])."'
SET descriere = '".mysql_real_escape_string($_POST[descriere])."'
SET joy = '".mysql_real_escape_string($_POST[joy])."'
SET comm = '".mysql_real_escape_string($_POST[comm])."'
WHERE username='".mysql_real_escape_string($_POST['username'])."'";
header("location: welcome.php?remarks=success");
}
?>
非常感谢您的支持!
【问题讨论】:
-
在第二个文件中,您正在查询选择用户,计算行数。如果有多于一行,则重定向到备注=失败。所以你不能更新数据,因为如果用户名存在它会重定向假,如果它不存在它不能进行更新,因为用户不存在。
-
谢谢!你能帮我清理一下吗?
-
另外你正在做
$sql = ...不会被触发,使用mysqli_query($sql); -
把你的 if 条件转一下。 “else”部分的代码应该在“if”部分。就这样。正如首演所说,mysqli_query($sql) 而不是 $sql = 没见过这个。
-
您不应将
mysqli_与mysql_混用。特别是,mysql_real_escape_string应该是mysqli_real_escape_string。见stackoverflow.com/questions/17498216/…