Ваш код должен быть чем-то вроде этого
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM Users WHERE UserName LIKE '$username'";
echo $query;
$result = mysql_query($query);
if($result === FALSE) {
die(mysql_error("error message for the user"));
}
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
. После этого вы получите запрос, напечатанный на экране. Попробуйте выполнить этот запрос на своем сервере и посмотрите, дает ли он желаемые результаты. В большинстве случаев ошибка содержится в запросе. Остальная часть кода верна.
Я думаю, что это самый простой и эффективный способ:
@echo off
echo %time%
(
start call batch1.bat
start call batch2.bat
start call batch3.bat
start call batch4.bat
) | set /P "="
echo %time%
В этом методе состояние ожидания в основном файле управляется событиями , поэтому оно не потребляет любое время процессора!
EDIT: Добавлены некоторые пояснения
Команда set /P
прекратится, когда какая-либо из команд в ( block )
выведет линию , но команды start
не показывают строку в этом cmd.exe . Таким образом, set /P
продолжает ждать ввода до тех пор, пока не закончится все процессы, запущенные командами start
. В этот момент линия трубопровода, связанная с ( block )
, закрыта, поэтому set /P
Stdin закрыт, а команда set /P
заканчивается ОС.
Попробуйте.
@echo off
echo %time%
start "" /wait cmd /c bat1.bat |start "" /wait cmd /c bat2.bat |start "" /wait cmd /c bat3.bat
echo %time%
pause
дают уникальную строку заголовка новым процессам, а затем проверяют, запущены ли какие-либо процессы с этой строкой в заголовке:
start "+++batch+++" batch1.bat
start "+++batch+++" batch2.bat
start "+++batch+++" batch3.bat
start "+++batch+++" batch4.bat
:loop
timeout /t 1 >nul
tasklist /fi "windowtitle eq +++batch+++*" |find "cmd.exe" >nul && goto :loop
echo all tasks finished
(find
используется, потому что tasklist
не вернуть полезный уровень ошибок)
У вас может быть batch1..batchn4 создавать файлы флагов, когда они закончатся.
, например echo y > flag1
в batch1.bat
Затем в главном командном файле проверьте наличие файлов флагов перед выходом. Вам понадобится какая-то утилита для сна, чтобы сделать что-то вроде этого в конце основного пакетного файла:
IF EXIST flag1 GOTO check2
sleep <for a short amount of time>
goto check1
:check2
IF EXIST flag2 GOTO check3
sleep <for a short amount of time>
goto check2
:check3
IF EXIST flag3 GOTO check4
sleep <for a short amount of time>
goto check3
:check4
IF EXIST flag4 GOTO xit
sleep <for a short amount of time>
goto check4
:xit
Недостатком этого метода является то, что ваше время будет немного от вас, потому что вы опрос для файлов флагов, а не ведение событий. Это может быть или не быть проблемой в вашей ситуации. Таким образом, пакетные файлы довольно ограничены. Возможно, вам лучше попытаться сделать это в PowerShell или на python или на каком-либо другом более умелом языке сценариев.