機能の問題

WBOY
WBOYオリジナル
2016-06-23 14:20:09923ブラウズ

function PHP カスタム関数 PHP

<?phpfunction test($sql){	require_once("../../config.php");	$query = sqlsrv_query($conn,$sql);	if( $query === false) {		die( print_r( sqlsrv_errors(), true) );	}	$row = sqlsrv_fetch_array($query);	echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>

test("SELECT COUNT(name) FROM tb1 GROUP BY name");
test("SELECT COUNT(name) FROM tb2 GROUP BY name");
呼び出しても問題ありませんはい、ただし 2 つ以上ある場合はエラーが報告されます。なぜですか?

ディスカッション (解決策) に返信します

クエリを終了した後、前のリクエストの結果を再度クリーンアップする必要があります

クエリを終了した後、前のリクエストの結果をクリーンアップする必要があります前回のリクエストの結果をクリーンアップするにはどうすればよいですか?

function test($sql){
require_once("../../config.php"); // ロードされている場合はロードされません
$query = sqlsrv_query($conn,$sql) ; //ロードされていない場合(2回目実行時)$connはもう存在しないのでしょうか?
....
}

Lao Xu は正しいです。コード $conn はグローバル変数として使用する必要があります。そうでない場合、$conn を 2 回呼び出すと存在しません
エラー メッセージが次のようになるかどうかを確認してください

さらに、結果をクリーンアップすることも必要です。以前はクリーンアップしないようにしましたが、結果として 2 つの結果がインターリーブされ、混乱してしまいました。Mysql は mysql_free_result() であり、コードは sqlsever のように見えます。おそらく sqlsrv_free_stmt() です
他のデータベースにも同様の関数があります

require_once("../../config.php"); 関数内にファイルを導入しないようにしてください。 , 関数を呼び出すファイルにファイルをインポートします

function test($sql) {

require_once("../../config.php") //ロードされている場合はロードされません

$query = sqlsrv_query($conn,$sql); //ロードされていない場合(2回目実行)$ connは存在しない?

....
}

Lao Xu は正しいです。コード $conn はグローバル変数として使用する必要があります。そうでない場合、$conn を 2 回呼び出すと存在しません
エラー メッセージが次のようになるかどうかを確認してください

さらに、結果をクリーンアップすることも必要です。以前はクリーンアップしないようにしましたが、結果として 2 つの結果がインターリーブされ、混乱してしまいました。Mysql は mysql_free_result() であり、コードは sqlsever のように見えます。それはおそらく sqlsrv_free_stmt() です
他のデータベースにも同様の機能があります、ありがとうございます。 ! !ここで質問したいのですが、mssql_init 関数を sqlsrv_init に置き換えると、sqlsrv_init 関数は機能しません。代わりにどの関数を使用する必要がありますか?

マニュアルを見てください。各インターフェイスは異なります。関数名の接頭辞を変更するだけという意味ではありません

マニュアルを見てください http://php.chinaunix.net/manual/zh/ref.sqlsrv.php

rree

<?phprequire_once("../../config.php");global $conn;$conn=$conn;function test($sql){    global $conn;    $query = sqlsrv_query($conn,$sql);    if( $query === false) {        die( print_r( sqlsrv_errors(), true) );    }    $row = sqlsrv_fetch_array($query);    echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>

こんなことは出来ません! ! !

function test($sql){

require_once("../../config.php"); // ロードされている場合はロードされません
$query = sqlsrv_query($conn,$sql) ; //ロードされていない場合(2回目実行時)$connはもう存在しないのでしょうか?

....

}

<?phprequire_once("../../config.php");global $conn;$conn=$conn;function test($sql){    global $conn;    $query = sqlsrv_query($conn,$sql);    if( $query === false) {        die( print_r( sqlsrv_errors(), true) );    }    $row = sqlsrv_fetch_array($query);    echo $row[0];}test("SELECT COUNT(name) FROM tb1 GROUP BY name");test("SELECT COUNT(name) FROM tb2 GROUP BY name");?>


echo $row[0];
を $row[0] を返すように変更します

<?php $a = test("SELECT COUNT(name) FROM tb1 GROUP BY name");$b = test("SELECT COUNT(name) FROM tb2 GROUP BY name"); //为什么我这些写它就直接输出了呢?我想把值存在变量里,再用 echo 来输出。?>

これはできません。 ! !

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。