使用mysqli不插入数据

时间:2013-12-02 06:20:14

标签: php mysqli

我有以下主要文件:

的index.php:

<?php
include_once("inc/config.php");
$view = $_GET["view"];
include_once "template.php";
?>

的config.php:

define("HOST","localhost");
define("USER","root");
define("PASS","*******");
define("DATABASE","abc");

$mysqli = new mysqli(HOST,USER,PASS,DATABASE);

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

查看/ create_account.php:

<?php 
include_once(CLASS_PATH."create_account.php"); 
$acc = new account();

if((isset($_POST)) and ($_REQUEST['mode']=="insert"))
{
    $acc->insert_orginfo();
}
?>

类/ create_account.php:

<?php
class account
{

    function __construct () {

    }

    /* ----  insert organization info into table  ---- */
    function insert_orginfo()
    {
        extract($_POST);

        $query  = "insert into `organisationinfo` 
                     (`org_name`, `addr1`, `addr2`, `city`, `state`, `country`, `pin`, `tax_number`, `url`) 
                   values 
                   ('$org_name', '$add1', '$add2', '$city', '$state', '$country', '$pincode', '$tax_no', '$url')";

        $mysqli->query($query);
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        return $mysqli->insert_id;
    }
}
?>

index.php文件包含config.phptemplate.php文件,并使用template.php文件包含视图文件(例如,view / create_account.php)。使用视图文件我调用类的功能。

现在,问题是没有插入数据。如果我在config.php中添加class/create_account.php文件,那么它正在工作。但是这个类文件和视图文件最终包含在index.php中在index.php文件配置文件中包含。

  

表示index.php文件包含template.php文件。 template.php文件包含view / create_account.php文件和view / create_account.php文件包含class / create_account.php

那么这里有什么问题?
提前致谢。

2 个答案:

答案 0 :(得分:1)

这是范围问题。 mysqli不是插入函数中的“范围”。

最快的解决方案是让它“全球化”。 http://php.net/manual/en/language.variables.scope.php - 请参阅“全球”关键字部分。

  function insert_orginfo()
  {

    $query  = "insert into `organisationinfo` (`org_name`, `addr1`, `addr2`, `city`, `state`, `country`, `pin`, `tax_number`, `url`) values ('$org_name', '$add1', '$add2', '$city', '$state', '$country', '$pincode', '$tax_no', '$url')";

    global $mysqli;   // bring MySQL into scope.

    $mysqli->query($query);
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    return $mysqli->insert_id;

答案 1 :(得分:0)

试试这个

/* ----  insert organization info into table  ---- */
    function insert_orginfo()
    {
        extract($_POST);
       global $mysqli;
        $query  = "insert into organisationinfo (org_name, addr1, addr2, city, state, country, pin, tax_number, url) values ('$org_name', '$add1', '$add2', '$city', '$state', '$country', '$pincode', '$tax_no', '$url')";

        $mysqli->query($query);
        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        return $mysqli->insert_id;
    }