2016-12-16 5 views
0

私はMySQLでビューを作成するためのSQLコードを作成しました。ローカルまたはコンピュータ上のこのコードは正しく動作しますが、リモートサーバー上で実行すると機能しません。PHPコードでphpmyadminデータベースのビューを作成しますか?

私はこのコードをコピーして、サーバー上のPhpMyadminのSQLの場所にそれを動作させ、問題なく貼り付けます。私はコードのセクションを変更せず、phpから、phpmyadminでコピーしただけです。

サーバーのWebページで動作しないこのPHPトランザクションの後ろには何が起こっていますか?

私の意見の完全な一部:

$conn2 = new mysqli($servername, $username, $password,$dbname); 

$view_baz1maz1="CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ SQL SECURITY 
DEFINER VIEW `baz1amz1` as select `regvezarat`.`bazemp`.`PrsID` AS `PrsID`, 
`regvezarat`.`bazemp`.`Name` AS `Name`,`regvezarat`.`bazemp`.`Family` AS `Family`, 
,`regvezarat`.`bazemp`.`AccID` AS `AccID` from `regvezarat`.`bazemp` 
union select 
`regvezarat`.`infemp`.`PrsID` AS `PrsID`,`regvezarat`.`infemp`.`Name` AS `Name`, 
`regvezarat`.`infemp`.`Family` AS `Family`,`regvezarat`.`infemp`.`FtName` AS `FtName`, 
regvezarat`.`infemp`.`NumID` AS `NumID`,`regvezarat`.`infemp`.`AccID` AS `AccID` from 
`regvezarat`.`infemp`;"; 


if(mysqli_query($conn2,$view_baz1maz1)) 
{ 
    $num_win+=1; 
} 
else 
{ 
mysqli_error($conn2); 
$num_fail+=1; 
echo "baz1amz1".'<br>'; 
} 

だから私は、何らかのエラーが発生した場合、他のブロックが実行され、baz1amz1で表彰は私のためのガイドのためのページに表示期待しています。私はこのビューが実行されると思いますが、DBでコミットされていないと思われます。おそらくトランザクションは問題なく実行され、最終的にはDBでコミットしたい、PHPからMySQLに十分な特権がありません。 このコードを間違いなくエラーなくローカルで実行します。
可能な場合は?

+0

サーバーのphpmyadminなど、サーバーとコンピュータの機能が異なります特権オプションメニューバーでは、私のDBのサーバーのユーザーを作成するとき、私は驚くべきですので、ビューを作成するなどの権限を設定するための多くのオプションがあります –

+0

あなたのコードは "maiaandi"や "bazemp"、おそらくテーブル名のようなフィールドをどこかに持っていますリモートサーバーで作成したデータベースに同じテーブルとフィールドがありますか? –

+0

私も、ありがとう、@ jeff、私の質問のスペル。 –

答えて

0

最初の行の以下の部分削除:

… ALGORITHM=UNDEFINED DEFINER=`root`@ SQL SECURITY DEFINER … 

で、文は単にから始める必要があります。CREATE VIEW

CREATE VIEW `baz1amz1` as select… 

DEFINER=SQL SECURITY DEFINERのパラメータは、MySQL SUPER権限を必要とし、このビューの動作には影響しません。 (ビューは特別な権限が必要な状況で使用されますが、ここでは表示されません)

+0

こんにちは、私はあなたの言葉を休ませていますが、この問題は、DBにコミットされていない可能性があると私は思っていましたが、私はセキュリティパラメータとphpmyadminのSQLステートメントがなくても正しく動作するというコードをコピーします。走った後に何が起こるの? –

関連する問題