Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么不更新数据库中的url_Php_Mysql - Fatal编程技术网

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?

  }

?>