ホームページ >バックエンド開発 >PHPチュートリアル >insert SQL ステートメントの実行時に echo が失敗するのはなぜですか?
insert ステートメントを実行する方法は次のとおりです。
function execute_data($sql){ $result = @mysql_query($sql) or die(mysql_error()); @mysql_free_result($result) or die(mysql_error()); return $result; }
$sql = "insert into test(name) values('$name')"; if(execute_data($sql)) { echo 'ok';}
function get_js_array($sql){ $result = @mysql_query($sql) or die(mysql_error()); $arr = array(); while($row = @mysql_fetch_array($result, MYSQL_ASSOC)){ $arr[] = $row; } $js = json_encode($arr); mysql_free_result($result); return $js; }
関数execute_dataの戻り値$resultは関数mysql_free_resultによって解放され、戻り値はnullですよね? $result を出力して見てください 偽ですか?
$result を出力して偽かどうかを確認してください
偽ではありません。無事挿入できました。エコー出力ができないだけです。
解放して返しましたか?
mysql_query($sql) は挿入コマンドの論理値のみを返します
しかし、php エラー メッセージをブロックしているため、die( mysql_error()) はプログラムを終了するだけです。 SQL コマンドには何も問題がないためです (mysql_error() は空の文字列を返します)
したがって、mysql_free_result($ result) はエラーを報告します: $result は有効なリソースではありません
しかし、それをブロックしたのは PHP エラー メッセージであり、SQL コマンドが間違っていないため、die(mysql_error()) はプログラムを終了するだけです (mysql_error() は空の文字列を返します) )