2016-12-16 78 views
0

我編寫了SQL代碼來創建在MySQL中創建視圖。此代碼在本地或我的計算機上正常工作,但在遠程服務器上運行時不起作用。通過php代碼創建phpmyadmin數據庫中的視圖?

當我複製此代碼並粘貼到服務器上的PhpMyadmin的SQL位置它的行爲以及沒有任何問題。我沒有更改任何代碼段,只從php複製,然後通過phpmyadmin。

這個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的讚揚顯示引導我頁面上。我猜這個視圖運行,但它沒有在數據庫中提交,也許交易沒有任何問題執行,最終當它想在數據庫中提交時,沒有足夠的權限,從PHP到MySQL。 我在本地運行此代碼沒有任何錯誤和錯誤。
如果可能?

+0

沒有某些功能從服務器和我的電腦不同,例如在phpmyadmin的服務器不存在特權選項在菜單欄中,但是當在服務器上爲我的數據庫創建用戶時,有很多設置權限的選項,比如創建視圖,所以我很棒 –

+0

你的代碼有像「maiaandi」和「bazemp」的字段,可能是某個表名,你在遠程服務器中創建的數據庫中有相同的表和字段? –

+0

我也是,謝謝@jeff,拼出我的問題。 –

回答

0

卸下第一線的以下部分:

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

也就是說,該聲明應該開始作爲簡單:

CREATE VIEW `baz1amz1` as select… 

DEFINER=SQL SECURITY DEFINER的參數CREATE VIEW需要MySQL的超級特權,並且不影響此視圖的行爲。 (他們用於視圖需要特殊權限的情況下,這似乎不是這裏的情況。)

+0

你好,我暫停你的提到,但這個問題仍然存在,正如我認爲可能事務沒有在數據庫中提交的那樣,我複製了沒有安全參數和過去的phpmyadmin的SQL語句中的代碼,它的工作正常。運行後面會發生什麼? –