【问题标题】:Problems in URL and mysqliURL 和 mysqli 中的问题
【发布时间】:2015-09-01 09:07:09
【问题描述】:

你好 stackoverflow 的人。我需要脚本方面的帮助。我有注册文件和索引文件,当我为索引文件制作案例时,当注册操作时,加载registration.php标头,(index.php?action=register)我的注册脚本不起作用!我收到变量 mysql 未找到的错误(在 register.inc.php 文件中)。但是当 URL 正常时 - www.website.com/register.php 一切正常,你们知道这是什么问题吗?我该如何解决?

这是我的 register.in.php 文件开始:

<?php
include_once 'db_connect.php';
include_once 'psl-config.php';

$error_msg = "";

if (isset($_POST['username'], $_POST['email'], $_POST['p'])) {
    // Sanitize and validate the data passed in
    $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        // Not a valid email
        $error_msg .= '<p class="error">The email address you entered is not valid</p>';
    }

    $password = filter_input(INPUT_POST, 'p', FILTER_SANITIZE_STRING);
    if (strlen($password) != 128) {
        // The hashed pwd should be 128 characters long.
        // If it's not, something really odd has happened
        $error_msg .= '<p class="error">Invalid password configuration.</p>';
    }

    $prep_stmt = "SELECT id FROM members WHERE email = ? LIMIT 1";
    $stmt = $mysqli->prepare($prep_stmt);

错误在 $mysqli. $mysql 来自文件 do_connect.php:

<?php
include_once 'psl-config.php';
$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

请帮忙?

【问题讨论】:

  • 这个 psl-config.php 已经包含在 db_connect.php 中了,为什么还要包含它?
  • 把完整的错误写在这里!!
  • 这里是错误Notice: Undefined variable: mysqli in /home/....../public_html/includes/register.inc.php on line 30 Fatal error: Call to a member function prepare() on a non-object in /home........../public_html/includes/register.inc.php on line 30
  • 代码似乎没问题。尝试将$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE); 放在$prep_stmt = "SELECT id FROM members WHERE email = ? LIMIT 1"; 上方并再次运行。
  • 大声笑,谢谢! .但是为什么它不从文件中取出它呢? ://

标签: php mysql


【解决方案1】:

要跟踪错误,请使用逐步的方式。放

$prep_stmt = "SELECT id FROM members WHERE email = ? LIMIT 1";
$stmt = $mysqli->prepare($prep_stmt);

就在下面

include_once 'db_connect.php';

手动将数据库中存在的任何电子邮件 ID 放入查询中。如果再次不起作用,则可能是包含文件的问题。如果成功了,那就向前迈出一步。

$prep_stmt = "SELECT id FROM members WHERE email = ? LIMIT 1";
$stmt = $mysqli->prepare($prep_stmt);

就在下面

include_once 'psl-config.php';

然后如果工作,然后把它放在下面

if (isset($_POST['username'], $_POST['email'], $_POST['p'])) {

等等。你最终会得到错误的原因。

【讨论】:

  • 当我在include_once 'db_connect.php'; 下方发出同样的错误!所以包含文件有问题。
  • 是的。似乎是一样的。尝试转到'db_connect.php 并直接输入您的查询代码并查看它是否有效。或尝试echo "Working"; 并运行您的代码。如果不包含文件,则不应打印Working
  • 打印工作正常。所以我用 require 改变了 include_once,现在一切正常。这两者 include once 和 require 有很大区别吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2012-10-12
相关资源
最近更新 更多