Php 为什么不更新数据库中的url
我有一个页面名为Php 为什么不更新数据库中的url,php,mysql,Php,Mysql,我有一个页面名为ques.php。如果用户的答案正确,他将被引导到下一个ques1.php。用户发布的答案由check.php检查,如果正确,我想将新URL(ques1.php)存储在数据库的用户帐户中 check.php <?php require_once("./include/membersite_config.php"); if (!$fgmembersite->CheckLogin()) { $fgmembersite->RedirectToUR
ques.php
。如果用户的答案正确,他将被引导到下一个ques1.php
。用户发布的答案由check.php检查,如果正确,我想将新URL(ques1.php
)存储在数据库的用户帐户中
check.php
<?php
require_once("./include/membersite_config.php");
if (!$fgmembersite->CheckLogin()) {
$fgmembersite->RedirectToURL("login.php");
exit;
}
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("simplelogin") or die(mysql_error());
$data = mysql_query("SELECT * FROM member") or die(mysql_error());
while($info = mysql_fetch_array( $data )) {
// print $info['username'];
if ($info['username'] == $fgmembersite->UserName()) {
$fullname = $info['name'];
$username = $info['username'];
$password = $info['password'];
$email = $info['email'];
$url = $info ['url'];
break;
}
}
$answer = $_POST['answer'];
if ($answer == "correct") {
"UPDATE `simplelogin`.`member`
SET `url` = 'ques1.php'
WHERE
`member`.`name` = '$fullname'
AND `member`.`email` = '$email'
AND `member`.`username` = '$username'
AND `member`.`password` = '$password'
AND `member`.`confirmcode` = 'y'
AND `member`.`url` = '$url'";
//in place of above update query i had also used
//"UPDATE member
//SET url = 'ques1.php'
//WHERE username = '$username'"
Header("Location:ques1.php");
} else {
Header("Location: ques.php");
}
?>
login.php
<?php
require_once("./include/membersite_config.php");
if (isset($_POST['submitted'])) {
if ($fgmembersite->Login()) {
//$fgmembersite->RedirectToURL("login-home.php");
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("simplelogin") or die(mysql_error());
$data = mysql_query("SELECT * FROM member") or die(mysql_error());
while ($info = mysql_fetch_array( $data )) {
if ($info['username']==($fgmembersite->SafeDisplay('username'))) {
$url = $info['url'];
break;
}
}
$fgmembersite->RedirectToURL("$url");
}
}
?>
<?php
require_once("./include/membersite_config.php");
if (isset($_POST['submitted']) && $fgmembersite->Login()) {
// Define DB connection info in variables for readability/maintainability
$dbHost = 'localhost';
$dbUser = 'root'; // NEVER use root for a live website!
$dbPass = ''; // A blank root password? Really?
$dbName = 'simplelogin';
// Connect to database - NEVER show the result of mysql_error() in a live site!
mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());
// Fetch the URL from the database
$query = "
SELECT `url`
FROM `member`
WHERE `username` = '".mysql_real_escape_string($fgmembersite->UserName())."'
";
$result = mysql_query($query) or die(mysql_error());
if (!mysql_num_rows($result)) die('Invalid user name');
$info = mysql_fetch_assoc($result);
$url = $info['url'];
// Redirect to URL
// Add some error checking to verify that $url actually contains something valid!
$fgmembersite->RedirectToURL($url);
} else {
// What happens if the condition fails?
}
?>
在login.php
中,我从数据库中检索URL并重定向用户-默认情况下,用户的URL为ques.php
为什么我的查询没有更新数据库中的url
"UPDATE `simplelogin`.`member` SET `url` = 'ques1.php' WHERE
`member`.`name` ='$fullname'
AND `member`.`email` = '$email' AND `member`.`username` = '$username'
AND `member`.`password` = '$password'
AND `member`.`confirmcode` = 'y' AND `member`.`url` = '$url'" ;
没有显示为作为查询运行,您没有将其放置在mysql\u query()
函数中,因此它不知道您试图对该语句执行什么操作
请尝试以下方法:
mysql_query(
"UPDATE `simplelogin`.`member` SET `url` = 'ques1.php' WHERE
`member`.`name` ='$fullname'
AND `member`.`email` = '$email' AND `member`.`username` = '$username'
AND `member`.`password` = '$password'
AND `member`.`confirmcode` = 'y' AND `member`.`url` = '$url'");
由于以下评论而更新:
试试这个,它已被重写和简化,应该可以工作,如果没有请你得到错误消息或没有
mysql_query("
UPDATE
member
SET
url = 'ques1.php'
WHERE
name = '$fullname'
AND
email = '$email'
AND
username = '$username'
AND
password = '$password'
AND
confirmcode = 'y'
AND
url = '$url'
") or die('Unable to update members URL: ' . mysql_error());
执行查询,伙计。。。。使用
mysql\u查询($your\u update query”)代码>实际上,您正在循环一组数据库结果,并与您已有的值进行比较,以获取您已有的值。充其量它验证用户是否存在于数据库中,充其量它什么也不做
实际上,您需要使用数据库表的主键进行更新。最佳实践表明,这应该是一个自动递增的整数,它与数据无关,只用于标识行。初始化$fgmembersite
对象时,应将此值存储在其中,以便在需要引用用户的任何数据库查询中轻松使用。最坏的情况是,表的username
列上应该有一个唯一的索引
您可以完全删除选择
查询-您已经拥有用户名,因此您可以直接在更新中使用该用户名:
check.php:
<?php
require_once("./include/membersite_config.php");
// Redirect to login page if not already authenticated
if (!$fgmembersite->CheckLogin()) {
$fgmembersite->RedirectToURL("login.php");
exit;
}
// Define DB connection info in variables for readability/maintainability
$dbHost = 'localhost';
$dbUser = 'root'; // NEVER use root for a live website!
$dbPass = ''; // A blank root password? Really?
$dbName = 'simplelogin';
// Connect to database - NEVER show the result of mysql_error() in a live site!
mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());
if ($_POST['answer'] == 'correct')
// Update the database with the new URL
$query = "
UPDATE `member`
SET `url` = 'ques1.php'
WHERE `username` = '".mysql_real_escape_string($fgmembersite->UserName())."'
";
mysql_query($query) or die(mysql_error());
// This line should help you debug the query. REMOVE IT before putting this script on a live site!
if (!mysql_affected_rows()) die("No rows were affected by the query.\nQuery: $query\nError: ".mysql_error());
// Redirect to ques1.php
// Note that a header redirect should provide a FULL url, not just a relative path.
header("Location:ques1.php");
} else {
// Redirect to ques.php
header("Location: ques.php");
}
?>
试着做一个非常简短的例子,而不是简单地复制你的整个代码,让别人来纠正你的错误。while($info=mysql_fetch_array($data)){//Print$info['username'];if($info['username']==$fgmembersite->username(){$username=$info['username'];break;}$answer;如果($answer==“correct”){sql_query(“UPDATE member SET url='ques1.php'WHERE username='$username');}创建了一个简短的示例,请检查倒逗号(替换为“'),可能是正在创建的problem@user1253753更新了我的答案,还有$url
到底传递了什么?您确定查询满足所有条件吗?e、 是否在数据库中找到与姓名、电子邮件、用户名、密码、确认码和url完全匹配的记录?它不会提示任何错误!并且没有更新数据库中的url$url正在传递用户上次访问的url…url是新页面,如果答案正确,用户将被重定向到该页面。。它所做的事情和你所理解的完全一样。@user1253753嗯,我只能建议它找不到符合所有这些条件的记录,首先,您应该尝试回显所有变量:$fullname
$email
$username
$password
和$url
,并确保返回预期结果,然后我建议进入phpmyadmin之类的程序,查询数据库,看看它是否返回与上述变量值匹配的行。
<?php
require_once("./include/membersite_config.php");
if (isset($_POST['submitted']) && $fgmembersite->Login()) {
// Define DB connection info in variables for readability/maintainability
$dbHost = 'localhost';
$dbUser = 'root'; // NEVER use root for a live website!
$dbPass = ''; // A blank root password? Really?
$dbName = 'simplelogin';
// Connect to database - NEVER show the result of mysql_error() in a live site!
mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());
// Fetch the URL from the database
$query = "
SELECT `url`
FROM `member`
WHERE `username` = '".mysql_real_escape_string($fgmembersite->UserName())."'
";
$result = mysql_query($query) or die(mysql_error());
if (!mysql_num_rows($result)) die('Invalid user name');
$info = mysql_fetch_assoc($result);
$url = $info['url'];
// Redirect to URL
// Add some error checking to verify that $url actually contains something valid!
$fgmembersite->RedirectToURL($url);
} else {
// What happens if the condition fails?
}
?>