作者skywillnosky (Alfred)
看板PHP
標題[請益] 用PHP創造資料庫的帳戶
時間Tue Sep 22 21:43:47 2009
不知道這個問題可不可以在這裡發問
其實是要用PHP做一個的介面
它可以用來創造資料庫的帳號(以phpMyAdmin來說)
SQL的語法是:
CREATE USER '$username'@'%' IDENTIFIED BY '$password';
GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ,
DROP ,
RELOAD ,
SHUTDOWN ,
PROCESS ,
FILE ,
REFERENCES ,
INDEX ,
ALTER ,
SHOW DATABASES ,
SUPER ,
CREATE TEMPORARY TABLES ,
LOCK TABLES ,
REPLICATION SLAVE ,
REPLICATION CLIENT,
CREATE VIEW ,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
CREATE USER,
EXECUTE ON * . * TO '$username'@'%' IDENTIFIED BY '$password' WITH
GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0
已知道直接放到SQL語法執行攔
可以成功創出擁有該權限之帳號
$username 為使用者名稱
$password 為密碼(用資料庫既定的新增使用者介面創造的話,會是一串星號******.....)
可是PHP就不知道要用什麼函式去執行該SQL的語法
以下是我未完成的程式:
<?php
$link = mysql_connect("localhost",123,"456");
mysql_query("SET NAMES 'utf8'");
if( !$link )echo "資料庫連結失敗<br>";
else echo "連結成功了<p>";
mysql_query("SET NAMES 'utf8'");
$username = $_POST["username"];//在html的型態為TEXT
$password = $_POST["password"];//在html的型態為password
$create_user"(SQL語法) ";
$mysql = mysql_query($create_user,$link);//不確定是不是可以這樣用
//當時翻書找不到執行這種SQL的函式= ="
if($data == 1)
echo"success!";
else
echo"fail!";
mysql_free_result($mysql);
mysql_close($link);
?>
願PTT 的PHP神解惑 感恩<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.125.82.99
→ yuleen123 :一樣執行 mysql_query, 只不過回傳值沒有東西而已 09/22 22:40
→ skywillnosky:可是我看使用者名單那邊沒有多出我新增的那個帳號耶 09/23 09:24
※ 編輯: skywillnosky 來自: 203.64.183.230 (09/23 09:45)
→ IBIZA :mysql_query只能執行單一sql指令,你試試看寫成stored 09/23 09:58
→ IBIZA :procedure或是用mysqli_multi_query 09/23 09:58
→ IBIZA :不過要小心 musqli_multi_query 是射後不理的 09/23 10:04
→ skywillnosky:ㄜ...射後不理是啥意思= ="? 09/23 10:11
→ IBIZA :就是遇到mysqli_multi_query, php不會等他執行完, 會 09/23 10:13
→ IBIZA :繼續往下走, 譬如你執行一個要跑很久的指令 09/23 10:14
→ IBIZA :在php裡頭用mysqli_multi_query, 會馬上就執行完, 但 09/23 10:14
→ IBIZA :其實mysql那邊還沒跑出結果 09/23 10:14
→ skywillnosky:啊 抱歉 我忘了說我適用PHP4的 mysqli好像不能用? 09/23 10:19
→ IBIZA :不然寫成兩行mysql_query應該也行吧 09/23 10:20
→ skywillnosky:其實我一直有個疑問 我這個不算是SQL單一指令嗎? 09/23 10:22
→ skywillnosky:對不起我有時腦筋轉不過來 還請大大見諒= = 09/23 10:23
→ IBIZA :Create User跟Grant是兩個指令 09/23 10:25
→ skywillnosky:原來如此,那使用mysql_query時其實可以不用變數吧@@? 09/23 10:28
→ skywillnosky:直接 mysql_query = ($mysql,$link);就好了? 09/23 10:29
→ skywillnosky:欸 可以了耶 謝謝你嚕 09/23 10:31