0

php関数で、データベーステーブルに次のように行を挿入しようとしました

function abnc()
{

$link = conn to db;
$query = "insert into table( a,c ,v) values (1,2,3);"
$result = mysqli_query($link, $query);
if(mysqli_rows_affected($link) == 1){
close conn;
return true;}
else{
return false;
close conn;
}

さて、別の場所で、この関数を呼び出して、挿入した値を読み取ろうとしました。

$done = abnc();
if($done)
{
$query = "select * from table where a=1 and c=2 and v=3";
$result = mysqli_query($link, $query);
echo "true";
echo mysqli_num_rows($result);
}
else
{
echo 'false';
}

私が得る出力はtrue0です。

関数が実行されている間、スクリプトは続行されたと思います。関数の実行が終了するまで待ちたい。任意の解決策??

4

3 に答える 3

0

スクリプトは続行しません。abnc() を呼び出すと、その関数が実行され、変数 $done に保存する値が返されます。出力が true0 であるため、この値はおそらく true です。

abnc() で行を挿入します。これは、1 つの行が影響を受け、関数が true を返すことを意味します。そして、データベース接続を閉じます。これが、挿入したデータに後でアクセスできない理由かもしれません。

于 2012-06-22T07:43:26.807 に答える
0

これを試して

$done = abnc();
$link = conn to db;

if ($done) {
    $query = "select * from table where a=1 and c=2 and v=3";
    $result = mysqli_query($link, $query);
    if (mysqli_num_rows($result) > 0) {
        do {
            $resultSet = array();
            if (($row = mysqli_store_result($link))) {
                while ($row = mysqli_fetch_assoc($row)) {
                    $resultSet[] = $row;
                }
                $return[] = $resultSet;
                @mysqli_free_result($row);
            }
        } while (@mysqli_next_result($link));
        return $return;
    }
} else {
    return false;
}
于 2012-06-22T07:45:33.490 に答える
0

関数でデータベース接続を閉じて、関数の外で開いて、スクリプトの最後で閉じてみてください。

于 2012-06-22T07:54:59.827 に答える