-1

mysqli を使用して mysql の重複エントリをチェックする関数を作成しようとしていますが (私にはまったく新しい)、このエラーを回避できません。私は 3 つの php ファイルを持っています: db.php - 関数を含む db 接続 functions.php (db.php が必要) と submit.php - 入力を受け取るファイル。

デシベル.php:

<?php
define("HOST", "localhost"); // The host you want to connect to.
define("USER", "user"); // The database username.
define("PASSWORD", "pass"); // The database password. 
define("DATABASE", "db_list"); // The database name.

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
?>

functions.php:

require 'db.php';
function check($str, $mysqli) {

$checkdupe = $mysqli->prepare("SELECT name FROM list WHERE str = ?"); //line giving me error
$checkdupe->bind_param("s", $str);
$checkdupe->execute();
$checkdupe->store_result();

    if ($checkdupe->num_rows > 0) {
        //dupe found
        return true;
    } else {
            //no dupe
            return false;
    }
}

submit.php

require 'functions.php';

if (isset($_POST['name'])) {
    if (check($_POST['name'], $mysqli) == true) { //added $mysqli parameter
        echo "success!";
    } else {
        echo "fail;
    }
} else {
  echo 'invalid post';
}
?>
4

4 に答える 4

2

あなたの関数定義は

function check($str, $mysqli) {

ただし、最初のパラメーターのみで呼び出します。その結果、2 番目のパラメーターは null になります。

check($_POST['name'])

使うので、

check($_POST['name'], $mysqli)

また、接続が実際に db.php で成功しているかどうかのチェックも行いません。これをファイルの最後に追加します。

if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}
于 2013-07-30T14:36:51.190 に答える
0

関数checkには 2 つのパラメーターが必要です。1 つのプロパティのみを割り当てます。

if (check($_POST['name']) == true)

する必要があります

if (check($_POST['name'], $mysqli) == true)

于 2013-07-30T14:37:01.457 に答える
-2

試す :

global $mysqli;
check($mysqli, ...);
于 2013-07-30T14:28:43.777 に答える