mysqli_prepare()期望参数1为mysqli

时间:2015-11-11 07:16:56

标签: php mysqli

在程序上使用 mysqli

时遇到问题

这里的功能是:

db.php中

<?php
define("DB_HOST", "host");
define("DB_LOGIN", "login");
define("DB_PASSWORD", "password");
define("DB_NAME", "myDb");

$link = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
if(!$link) {
    echo 'ERROR: ' . mysqli_connect_errno() . ': ' . mysqli_connect_error();
}
?>

function.php

<?php
function addItemToCatalog($var1, $var2, $var3, $var4) {
    $sql = 'INSERT INTO catalog (var1, var2, var3, var4) 
            VALUES (?, ?, ?, ?)';
    if (!$stmt = mysqli_prepare($link, $sql)){
        return false;
    }
    mysqli_stmt_bind_param($stmt, "ssii", $var1, $var2, $var3, $var4);
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_close($stmt); 
    return true;
}
?>

page.php文件

<?php
require_once ("db.php");
require_once ("function.php");

$var1 = $_POST['var1']; //showing without filtering methods
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
$var4 = $_POST['var4'];

if(!addItemToCatalog($var1, $var2, $var3, $var4)){ 
    echo 'some error text';
}
else { 
    header("Location: success.php"); 
    exit;
}
?>

使用它之后

  

警告:mysqli_prepare()要求参数1为mysqli,在第5行的 function.php 中给出null。

任何?

3 个答案:

答案 0 :(得分:1)

由于在db.php中定义了$link,你应该

require db.php;

在function.php文件中

答案 1 :(得分:0)

将两个文件db.phpfunction.php粘合在一起的方式我认为$link的结果被定义为全局变量 - 您需要使用global来访问它功能内:

function addItemToCatalog($var1, $var2, $var3, $var4) {
    global $link;
    ...
}

或通过参数显式地将$link提供给函数:

function addItemToCatalog($var1, $var2, $var3, $var4, $link) {
    ...
}

答案 2 :(得分:-3)

for(int i = 0; i < 921600 / 2; i++)
{
    if(arr[i] > 240) counter++;
}

for(int j = 921600 / 2; j < 921600; j++)
{
    if(arr[j] > 240) counter++;
}