Привет, кто может помочь хотя бы общих чертах как написать такой триггер. Есть скрипт который добавляет пароль и логин и ещё ряд значений нужных серверу в базу. Нужно что бы из этой базы, в другую базу перекинулись данные - логин пароль и блок данных стартовых которые уже есть. Но пароль надо зашифровать с "солью". Примерный скрипт шифрования есть. То есть принцип такой - Делаем таблицу, добавляем в нее одну строку со значениями. Далее триггер переписывает его в другу таблицу шифруя пароль. Далее запись удаляется. Триггер срабатывает только на появление записи в таблице. Объясните как это сделать? Перерыл весь интернет ей богу. Пока не пришел к пониманию. Триггер должен включать такие функции как: 1) Перекодировка пароля 2) Добавление в базу данных 3) Удаление строки из таблицы 4) Выполнение после появления строки 1 строки в таблице каждый раз(или если много строк одновременно появилось, что бы мог обработать) Буду очень благодарен тем кто поможет. По сути это надо к серверу fly for fan элемент увязывающий регистрацию игроков на сервер. Всем спасибо. Жду ваши ответы.
А вот и готовый триггер, кому надо можете использовать в своих разработках Код (PHP): [/B]USE [ACCOUNT_DBF]GO /****** Object: Trigger [dbo].[ACCOUNT_TBL1] Script Date: 12/10/2016 23:58:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[ACCOUNT_TBL1] ON [dbo].[ACCOUNT_TBL] FOR INSERT AS BEGIN /* use ACCOUNT_DBF_START GO use ACCOUNT_DBF_START GO */ DECLARE @account varchar(32) DECLARE @password varchar(32) DECLARE @isuse char(1) DECLARE @member char(1) DECLARE @id_no1 char(6) DECLARE @id_no2 char(255) DECLARE @realname char(1) DECLARE @reload char(1) DECLARE [USER=59603]@Cash[/USER] int --DECLARE VTORAYA TABLICA -- DECLARE @account2 varchar(32) DECLARE @gamecode char(4) DECLARE [USER=42940]@tester[/USER] char(1) DECLARE @m_chLoginAuthority char(1) DECLARE @regdate datetime DECLARE @BlockTime char(8) DECLARE [USER=5173]@endtime[/USER] char(8) DECLARE @WebTime char(8) DECLARE @isuse2 char(1) DECLARE @secession datetime DECLARE @email2 varchar(100) -- --PERVAUA TABLICA POLUCHENIE DANNIH SELECT @account=account, @password=password, @isuse=isuse, @member=member, @id_no1=id_no1, @id_no2=id_no2, @realname=realname, @reload=reload, @cash=cash FROM ACCOUNT_TBL --test delrte --DELETE FROM ACCOUNT_TBL --WHERE account = @account AND password = @password AND isuse = @isuse AND member = @member AND cash = [USER=59603]@Cash[/USER] --AND id_no2 = @id_no2 AND realname = @realname AND reload = @reload --REBILDING PASSWORD SET NOCOUNT ON DECLARE [USER=3631]@md5[/USER] varchar(32) DECLARE @salt varchar(100) SET @salt = 'flight' SET [USER=3631]@md5[/USER] = lower(CONVERT(VARCHAR(32), HashBytes('MD5', @salt+@password), 2)) --PRINT [USER=3631]@md5[/USER] --EXPORT V 1 table --use ACCOUNT_DB DECLARE [USER=60106]@test[/USER] varchar(32) SET [USER=60106]@test[/USER] = 'test' --USE ACCOUNT_DBF --GO INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) SELECT @account, [USER=3631]@md5[/USER], @isuse, @member, @id_no1, @id_no2, @realname, @reload, [USER=59603]@Cash[/USER] --INSERT --INSERT INTO ACCOUNT_DBF.dbo.ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) --SELECT account, password, isuse, member, id_no1, id_no2, realname, reload, cash --FROM ACCOUNT_DBF_START.dbo.ACCOUNT_TBL --VTORAUA TABLICA POLUCHENIE DANNIH --DELETE FROM ACCOUNT_DBF_START.dbo.ACCOUNT_TBL --WHERE account = @account AND password = @password AND isuse = @isuse AND member = @member AND id_no1 = @id_no1 AND id_no2 = @id_no2 AND realname = @realname AND reload = @reload AND cash = [USER=59603]@Cash[/USER] --SELECT @account2=account, @gamecode=gamecode, @tester=tester, @m_chLoginAuthority=m_chLoginAuthority, @regdate=regdate, @BlockTime=BlockTime, @EndTime=EndTime, @WebTime=WebTime, @isuse2=isuse, @secession=secession, @email2=email --FROM ACCOUNT_TBL_DETAIL --DECLARE @pass varchar(100) --SET @pass = @password --PRINT @salt --EXPORT V2 table /* INSERT INTO ACCOUNT_TBL_DETAIL (account, gamecode , tester, m_chLoginAuthority, regdate, BlockTime, EndTime , WebTime, isuse, secession, email) SELECT @account2, @gamecode, [USER=42940]@tester[/USER], @m_chLoginAuthority, @regdate, @BlockTime, [USER=5173]@endtime[/USER], @WebTime, @isuse2, @secession, @email2 */ --TRUNCATE TABLE ACCOUNT_TBL --TRUNCATE TABLE ACCOUNT_TBL_DETAIL END [B] Скажите как крассиво упаковать код под спойлер? закрыто Скажите как получить на php + sql количество строк? Скажите как получить в массив все записи определенного столбца? В примерах. Буду благодарен. Жду ваших ответов. Уважаемые!
После ряда опытов, и посоветовавшись со специалистом пришел к DBLIB PDO MSSQL Но наступил на грабли!!! Скажите пожалуйста как object сделать переменной int? Скажите пожалуйста как object Array сделать массивом? Или если такие преобразования не возможны то как работать в данной ситуации? Вот сам скрипт: Код (Text): <body> <?php ini_set('display_errors',1); error_reporting(E_ALL); echo $_POST['username']; echo $_POST['password']; echo $_POST['passwordconform']; echo $_POST['mail']; $mail = $_POST['mail'];; echo $_POST['bot']; $today = date("Y-m-d H:i:s"); $Username = $_POST['username']; $Password = $_POST['password']; $mail = $_POST['mail']; //$serverName = ".\SQLEXPRESS"; // Пишем имя компьютера с БД и имя экземпляра. если //instance и port стандартные, то можно не указывать //$connectionInfo = array("UID" => "Затерто", "PWD" => "Затерто", //"Database"=>"ACCOUNT_DBF"); //В принципе итак все понятно, UID - имя пользователя. //PWD - Пароль и наша созданная тестовая база данных //$conn = sqlsrv_connect( $serverName, $connectionInfo); /* if( $conn ) { echo "Connection established.\n"; } else { echo "Connection could not be established.\n"; die( print_r( sqlsrv_errors(), true)); } */ //dbo.tbl_Account //INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname,reload,cash ) //VALUES ('lx2004nt3', '111500', 'T', 'A', NULL, NULL, NULL, NULL, 0); //test //test echo "debilizm SQL TEST"; $dbh = new PDO("sqlsrv:Server=localhost\SQLEXPRESS;Database=ACCOUNT_DBF", "затерто", "затерто"); $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); $sth = $dbh->prepare('select count(account) as num from ACCOUNT_TBL'); $sth->execute(); $num = $sth->fetchObject(); print_r($num); // ($num->num) $sth = $dbh->prepare('select account from ACCOUNT_TBL'); $sth->execute(); $rows = $sth->fetchAll(PDO::FETCH_ASSOC); print_r($rows); //$md5password = md5($str); //echo $md5password; /* sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname,reload,cash ) VALUES ('$Username', HashBytes('MD5', '$str'), 2)), 'T', 'A', '', '', NULL, NULL, 0);"); */ //добавление в базу паролей //sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL (account, password, isuse, member, //id_no1, id_no2, realname,reload,cash ) //VALUES ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0);"); //добавление в детальную базу //sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL_DETAIL (account, gamecode, tester, m_chLoginAuthority,regdate ,BlockTime,EndTime,WebTime,isuse,secession,email) //VALUES ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', //NULL,'$mail');"); //тестовый мусор /* sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname,reload,cash ) VALUES ('lx2004nt3', '111500', 'T', 'A', NULL, NULL, NULL, NULL, 0);"); */ /* // дубль база паролей и данных юзера sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL_CLONE (account, password, isuse, member, id_no1, id_no2, realname,reload,cash ) VALUES ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0);"); sqlsrv_query($conn, "INSERT INTO ACCOUNT_TBL_DETAIL_CLONE (account, gamecode, tester, m_chLoginAuthority,regdate ,BlockTime,EndTime,WebTime,isuse,secession,email) VALUES ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', NULL,'$mail');"); */ //тестовое прошлое приложение /* sqlsrv_query($conn, "DELETE FROM ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname,reload,cash ) WHERE ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0);"); */ //Удаление данных из первой таблицы задвоенных //echo "delete db start"; //sleep(100); //sqlsrv_query($conn, "DELETE ACCOUNT_TBL //WHERE account ='$Username' AND password ='$Password';"); //sleep(100); // AND isuse = 'T' AND member = /'A' AND cash = 0 //получение MS SQL числа записей //2 variant /* sqlsrv_query($conn, "SELECT COUNT(account) FROM ACCOUNT_TBL;"); $row = mssql_num_rows ($conn); $total = $row; echo "$total"; echo "= TOTAL"; */ //simptom /* $arrlogin = array(); $q = "SELECT * FROM ACCOUNT_TBL"; $r = mssql_query($q); if (mssql_num_rows($r) > 0) { while ($l = mssql_fetch_array($r)) { $old = $l['account']; $arrlogin[] = $old; } } print_r ($arrlogin); */ //вывод числа значений массива /* echo "debilizm SQL TEST"; $res = mssql_query("SELECT COUNT(account) FROM ACCOUNT_TBL"); $row = mssql_fetch_row($res); $total = $row[0]; // всего записей echo $total; echo "=TOTAL"; mssql_close($conn); //simptom echo "debiblsm"; //$server = "WIN-1SUIAL4I3QE.\SQLEXPRESS"; //$connectionInfo = array( "Database"=>"ACCOUNT_DBF", "UID"=>"flyforfun", "PWD"=>//"q11eleonWARFACE" ); $conn = sqlsrv_connect( $server, $connectionInfo ); $sql = "SELECT * FROM ACCOUNT_DBF.[dbo].ACCOUNT_TBL"; $params = array(); $options = array( "password" => SQLSRV_CURSOR_KEYSET ); $stmt = sqlsrv_query( $conn, $sql , $params, $options ); $row_count = sqlsrv_num_rows( $stmt ); //if ($row_count === false) //echo "Error in retrieveing row count."; //else echo $row_count; // Соединяемся с MSSQL и выбираем базу echo "debiblsm"; //$link = mssql_connect('WIN-1SUIAL4I3QE.\SQLEXPRESS', 'flyforfun', 'q11eleonWARFACE'); mssql_select_db('ACCOUNT_DBF'); // Выбираем все строки из таблицы $query = mssql_query('SELECT * FROM [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL]'); echo 'Всего записей в таблице: ' . mssql_num_rows($query); // Очищаем результат mssql_free_result($query); mssql_close($conn); //SET @md5 = $link = mssql_connect('192.168.0.100', 'flyforfun', 'q11eleonWARFACE'); mssql_select_db('ACCOUNT_DBF', $link); $sql = "select * FROM ACCOUNT_TBL"; echo $sql; // Здесь вывожу текст запроса для проверки в MS echo "<p>"; $sql = mssql_query($sql); $len = mssql_num_rows ($sql); echo $len; mssql_close($link); for ($i = 1; $i <= 10; $i++) { echo $i; } */ $val = intval($num); for($i=0;$i<=$val;$i++) { if($rows[$i] == $Username ) { $account = 0; break; } //elseif ($rows[$i] != $Username) //{ //$account = 1; //break; //}; }; if ($account == 1) { echo "Добро пожаловать на сервер FLY FOR FUN LX2004NT"; //проверка логина $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) values ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0)"); $sth->execute(); $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_DETAIL (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) values ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', NULL,'$mail')"); $sth->execute(); //проверка логина $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_CLONE (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) values ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0)"); $sth->execute(); $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_DETAIL_CLONE (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) values ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', NULL,'$mail')"); $sth->execute(); $dbh->prepare("DELETE ACCOUNT_TBL WHERE account ='$Username' AND password ='$Password'")->execute(); } elseif ($account == 0) { echo "Поменяйте логин, данный логин занят уже другим пользователем"; }; //mssql_close($conn); /* убрать лишнее для теста $serverName = ".\SQLEXPRESS"; // Пишем имя компьютера с БД и имя экземпляра. если instance и port стандартные, то можно не указывать $connectionInfo = array("UID" => "flyforfun", "PWD" => "q11eleonWARFACE", "Database"=>"ACCOUNT_DBF"); //В принципе итак все понятно, UID - имя пользователя. PWD - Пароль и наша созданная тестовая база данных $conn2 = sqlsrv_connect( $serverName, $connectionInfo); if( $conn2 ) { echo "Connection established.\n"; } else { echo "Connection could not be established.\n"; die( print_r( sqlsrv_errors(), true)); } */ // /* //вывод числа значений массива $res = mysql_query("SELECT COUNT(namber) FROM doctor"); $row = mysql_fetch_row($res); $total = $row[0]; // всего записей echo $total; echo "=TOTAL"; mysql_close($dbconnect); // */ /* //simptom $arrlogin = array(); $q = "SELECT * FROM doctor"; $r = mysql_query($q); if (mysql_num_rows($r) > 0) { while ($l = mysql_fetch_array($r)) { $old = $l['simptom']; $arrsimptom[] = $old; } } print_r ($arrsimptom); */ ?> </body> </html>
обычно у объекта несколько свойств. любое из них ты можешь сделать интом так $var = (int)$obj->field; Но явно ты не этого хочешь. $var = (array)$obj; попробуй
Как бы эту проблему с числами массива мы решили уже. Код (Text): $num->num Но и вам спасибо за то что пытались помочь. Вопрос вот какой. Как сделать то что в скрипте? когда цикл пробегает по массиву и если пароль есть то значение переменной меняется. Если нет то он например 0. Я просто не понимаю как обратиться к массиву объектов. Уже по разному пробывал не выходит. Код (Text): for($i=0;$i<$num->num;$i++) { if((array)$rows->rows[$i] == $Username) { $account = 0; break; } if ((array)$rows->rows[$i] != $Username) { $account = 1; break; } else { echo "ошибка"; } ; }; Вопрос в том как к этому rows обратиться что бы оно поняло что от него хотят? при этом ругаеться на != очень почему то. Помогите пожалуйста. Я плохо понимаю объекты, классы, и массивы. Но учусь.
ну как бы мы эту проблему уже решили, но и вам спасибо, что пытаетесь. Объект сначала сконвертируюй в массив. А то, что ты пишешь (array)$rows->rows[$i] это какая-то муть, ты сам подумай, что тут написано по шагам. Откуда у тебя вообще объект? Покажи код, где он возникает.
PHP: $sth = $dbh->prepare('select account from ACCOUNT_TBL'); $sth->execute(); $rows = $sth->fetchAll(PDO::FETCH_ASSOC); print_r($rows); Вот отсюда берется. Оно выгружает список логинов в массив объектов. Как с ним работать я вообще не понимаю. А как сконвертировать? Вот так? $var = (array)$obj; Сделал. PHP: $var = (array)$rows; //var_dump($rows); //$account = 0; for($i=0;$i<$num->num;$i++) { if($var[$i] == $Username) { $account = 0; } if ($var[$i] != $Username) { $account = 1; } else { echo "ошибка"; } ; }; Теперь сервер выдает ошибку 500 internal error код ошибки 0x000000ff (Сервер IIS) Не понимаю в чем проблема???
в логи смотри, может быть что угодно покажи что покажет PHP: $rows = $sth->fetchAll(PDO::FETCH_ASSOC); var_dum ($rows);
Код (Text): if ($account == 1) { echo "Добро пожаловать на сервер FLY FOR FUN LX2004NT"; //проверка логина $dbh = new PDO("sqlsrv:Server=localhost\SQLEXPRESS;Database=ACCOUNT_DBF", "flyforfun", "убрано"); $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) values ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0)"); $sth->execute(); $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_DETAIL (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) values ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', NULL,'$mail')"); $sth->execute(); //проверка логина /* $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_CLONE (account, password, isuse, member, id_no1, id_no2, realname, reload, cash) values ('$Username', '$Password', 'T', 'A', NULL, NULL, NULL, NULL, 0)"); $sth->execute(); $sth = $dbh->prepare("INSERT INTO ACCOUNT_TBL_DETAIL_CLONE (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) values ('$Username', 'A000', '2', 'F', '', '20160827', '20260828', '20160827', '0', NULL,'$mail')"); $sth->execute(); */ $dbh->prepare("DELETE ACCOUNT_TBL WHERE account ='$Username' AND password ='$Password'")->execute(); } elseif ($account == 0) { echo "Поменяйте логин, данный логин занят уже другим пользователем"; }; а ругается оно на вот это по ходу. Вопрос? как в if'e делать запрос тогда?
Вот что выводит Код (Text): SQL TESTstdClass Object ( [num] => 92 ) Array ( [0] => Array ( [account] => supertest12344 ) [1] => Array ( [account] => supertest12344 ) [2] => Array ( [account] => supertest12344 ) [3] => Array ( [account] => supertest12344 ) [4] => Array ( [account] => supertest12344 ) [5] => Array ( [account] => supertest12344 ) [6] => Array ( [account] => supertest12344 ) [7] => Array ( [account] => supertest12344 ) [8] => Array ( [account] => supertest12344 ) [9] => Array ( [account] => supertest12344 ) [10] => Array ( [account] => supertest12344 ) [11] => Array ( [account] => supertest12344 ) [12] => Array ( [account] => supertest12344 ) [13] => Array ( [account] => supertest12344 ) [14] => Array ( [account] => supertest12344 ) [15] => Array ( [account] => supertest12344 ) [16] => Array ( [account] => supertest12344 ) [17] => Array ( [account] => supertest12344 ) [18] => Array ( [account] => supertest12344 ) [19] => Array ( [account] => supertest12344 ) [20] => Array ( [account] => supertest12344 ) [21] => Array ( [account] => supertest12344 ) [22] => Array ( [account] => supertest12344 ) [23] => Array ( [account] => supertest12344 ) [24] => Array ( [account] => supertest12344 ) [25] => Array ( [account] => supertest12344 ) [26] => Array ( [account] => supertest12344 ) [27] => Array ( [account] => supertest12344 ) [28] => Array ( [account] => supertest12344 ) [29] => Array ( [account] => supertest12344 ) [30] => Array ( [account] => supertest12344 ) [31] => Array ( [account] => supertest12344 ) [32] => Array ( [account] => supertest12344 ) [33] => Array ( [account] => supertest12344 ) [34] => Array ( [account] => supertest12344 ) [35] => Array ( [account] => supertest12344 ) [36] => Array ( [account] => supertest12344 ) [37] => Array ( [account] => supertest12344 ) [38] => Array ( [account] => supertest12344 ) [39] => Array ( [account] => supertest12344 ) [40] => Array ( [account] => supertest12344 ) [41] => Array ( [account] => supertest12344 ) [42] => Array ( [account] => supertest12344 ) [43] => Array ( [account] => supertest12344 ) [44] => Array ( [account] => supertest12344 ) [45] => Array ( [account] => supertest12344 ) [46] => Array ( [account] => supertest12344 ) [47] => Array ( [account] => supertest123441 ) [48] => Array ( [account] => supertest12344 ) [49] => Array ( [account] => supertest12344 ) [50] => Array ( [account] => supertest123441 ) [51] => Array ( [account] => ) [52] => Array ( [account] => ) [53] => Array ( [account] => ) [54] => Array ( [account] => ) [55] => Array ( [account] => ) [56] => Array ( [account] => supertest ) [57] => Array ( [account] => supertest ) [58] => Array ( [account] => supertest1 ) [59] => Array ( [account] => supertest1 ) [60] => Array ( [account] => supertest12 ) [61] => Array ( [account] => supertest12 ) [62] => Array ( [account] => supertest12 ) [63] => Array ( [account] => supertest12 ) [64] => Array ( [account] => supertest12 ) [65] => Array ( [account] => supertest12 ) [66] => Array ( [account] => supertest123 ) [67] => Array ( [account] => supertest123 ) [68] => Array ( [account] => supertest1234 ) [69] => Array ( [account] => supertest1234 ) [70] => Array ( [account] => supertest12344 ) [71] => Array ( [account] => supertest12344 ) [72] => Array ( [account] => supertest123441 ) [73] => Array ( [account] => supertest123441 ) [74] => Array ( [account] => supertest123441 ) [75] => Array ( [account] => supertest123441 ) [76] => Array ( [account] => supertest123441 ) [77] => Array ( [account] => supertest123441 ) [78] => Array ( [account] => supertest123441 ) [79] => Array ( [account] => supertest123441 ) [80] => Array ( [account] => supertest123441 ) [81] => Array ( [account] => supertest123441 ) [82] => Array ( [account] => supertest123441 ) [83] => Array ( [account] => supertest123441 ) [84] => Array ( [account] => supertest123441 ) [85] => Array ( [account] => supertest123441 ) [86] => Array ( [account] => supertest123441 ) [87] => Array ( [account] => supertest123441 ) [88] => Array ( [account] => supertest123441 ) [89] => Array ( [account] => supertest123441 ) [90] => Array ( [account] => supertest123441 ) [91] => Array ( [account] => supertest123441 ) )
Можешь объяснить как? я уже сделал вот так, кидает ошибки Код (Text): $var = (array)$rows; var_dump($rows); $account = 0; for($i=0;$i<$num->num;$i++) { if($var[$i] == $Username) { echo "$var[$i]"; $account = 0; echo "0"; } if ($var[$i] != $Username) { echo "$var[$i]"; $account = 2; echo "2"; } else { //$account = 1; echo "ошибка"; } ; }; Notice: Array to string conversion in C:\inetpub\wwwroot\dblibpdo\index.php on line 222
ты сравниваешь массив со строкой. переведи текст ошибки и станет понятно сразу. в массиве много значений. пхп не знает что с чем сравнивать.
Прошу прощения, но я вас не понимаю... я конечно затупок, понимаю только "человеческий ассемблер"(когда все разжованно полностью и понятно даже очень тупому человеку). Мои способности в программировании крайне малы. Но я же сравниваю Код (Text): $var[$i] == $Username там есть ключ, т.е. [$i] следовательно я сравниваю элемент массива, а не сам массив. Причем вы сами видите что это в for'e все. Разве это не так?
вы имеете в ввиду что надо вот так делать? Код (Text): $var[account][$i] == $Username или нет? я вас не понял. Вы считаете что там многомерный массив?
Я же вам показал что уже... там один массив вроде бы. Поймите я плохо знаю программирование, поэтому спрашиваю у других совета. Массив один. Как его пройти for'om? можете мне помочь? Код (Text): SQL TESTstdClass Object ( [num] => 92 ) Array ( [0] => Array ( [account] => supertest12344 ) [1] => Array ( [account] => supertest12344 ) [2] => Array ( [account] => supertest12344 ) [3] => Array ( [account] => supertest12344 ) [4] => Array ( [account] => supertest12344 ) [5] => Array ( [account] => supertest12344 ) [6] => Array ( [account] => supertest12344 ) [7] => Array ( [account] => supertest12344 ) [8] => Array ( [account] => supertest12344 ) [9] => Array ( [account] => supertest12344 ) [10] => Array ( [account] => supertest12344 ) [11] => Array ( [account] => supertest12344 ) [12] => Array ( [account] => supertest12344 ) [13] => Array ( [account] => supertest12344 ) [14] => Array ( [account] => supertest12344 ) [15] => Array ( [account] => supertest12344 ) [16] => Array ( [account] => supertest12344 ) [17] => Array ( [account] => supertest12344 ) [18] => Array ( [account] => supertest12344 ) [19] => Array ( [account] => supertest12344 ) [20] => Array ( [account] => supertest12344 ) [21] => Array ( [account] => supertest12344 ) [22] => Array ( [account] => supertest12344 ) [23] => Array ( [account] => supertest12344 ) [24] => Array ( [account] => supertest12344 ) [25] => Array ( [account] => supertest12344 ) [26] => Array ( [account] => supertest12344 ) [27] => Array ( [account] => supertest12344 ) [28] => Array ( [account] => supertest12344 ) [29] => Array ( [account] => supertest12344 ) [30] => Array ( [account] => supertest12344 ) [31] => Array ( [account] => supertest12344 ) [32] => Array ( [account] => supertest12344 ) [33] => Array ( [account] => supertest12344 ) [34] => Array ( [account] => supertest12344 ) [35] => Array ( [account] => supertest12344 ) [36] => Array ( [account] => supertest12344 ) [37] => Array ( [account] => supertest12344 ) [38] => Array ( [account] => supertest12344 ) [39] => Array ( [account] => supertest12344 ) [40] => Array ( [account] => supertest12344 ) [41] => Array ( [account] => supertest12344 ) [42] => Array ( [account] => supertest12344 ) [43] => Array ( [account] => supertest12344 ) [44] => Array ( [account] => supertest12344 ) [45] => Array ( [account] => supertest12344 ) [46] => Array ( [account] => supertest12344 ) [47] => Array ( [account] => supertest123441 ) [48] => Array ( [account] => supertest12344 ) [49] => Array ( [account] => supertest12344 ) [50] => Array ( [account] => supertest123441 ) [51] => Array ( [account] => ) [52] => Array ( [account] => ) [53] => Array ( [account] => ) [54] => Array ( [account] => ) [55] => Array ( [account] => ) [56] => Array ( [account] => supertest ) [57] => Array ( [account] => supertest ) [58] => Array ( [account] => supertest1 ) [59] => Array ( [account] => supertest1 ) [60] => Array ( [account] => supertest12 ) [61] => Array ( [account] => supertest12 ) [62] => Array ( [account] => supertest12 ) [63] => Array ( [account] => supertest12 ) [64] => Array ( [account] => supertest12 ) [65] => Array ( [account] => supertest12 ) [66] => Array ( [account] => supertest123 ) [67] => Array ( [account] => supertest123 ) [68] => Array ( [account] => supertest1234 ) [69] => Array ( [account] => supertest1234 ) [70] => Array ( [account] => supertest12344 ) [71] => Array ( [account] => supertest12344 ) [72] => Array ( [account] => supertest123441 ) [73] => Array ( [account] => supertest123441 ) [74] => Array ( [account] => supertest123441 ) [75] => Array ( [account] => supertest123441 ) [76] => Array ( [account] => supertest123441 ) [77] => Array ( [account] => supertest123441 ) [78] => Array ( [account] => supertest123441 ) [79] => Array ( [account] => supertest123441 ) [80] => Array ( [account] => supertest123441 ) [81] => Array ( [account] => supertest123441 ) [82] => Array ( [account] => supertest123441 ) [83] => Array ( [account] => supertest123441 ) [84] => Array ( [account] => supertest123441 ) [85] => Array ( [account] => supertest123441 ) [86] => Array ( [account] => supertest123441 ) [87] => Array ( [account] => supertest123441 ) [88] => Array ( [account] => supertest123441 ) [89] => Array ( [account] => supertest123441 ) [90] => Array ( [account] => supertest123441 ) [91] => Array ( [account] => supertest123441 ) )
Нанял, так сделали что сам доделываю, кроме этого я сам программист хоть и слабый, опыт в айти 14 лет, но не в программировании, в программировании 3-й год. Я мало чего понимаю, но стараюсь научиться и работать. Что бы понимать эти вещи... поймите мне нужно все уметь. Но людей знающих рядом раз два и обчелся, и они тоже не так много знают. Я сталкивался с ситуациями когда человек который шарит, не знал того в железе что знал я по сути. Т.е. я решал проблемы. Вот теперь за программирование взялся, вынужден сам писать проект. Потом как собственник я должен знать как оно работает, иначе какой я собственник? А вам большое спасибо за помощь. Кстати меня этот форум уже один раз пытался выручить, тогда не вышло сам нашел ответ рабочий. Но с MYSQL. Большое спасибо с MSSQL Код (Text): echo "if 2 $var[$i]['account'] Код (Text): array to string conversion но тем не менее сравнивает? может вариант сделать так? Код (Text): $var[$i]['account'] = $vivod; echo "if 2 $vivod"; Гуглил, пока ответа не нашел, но я понимаю что тут что то не так в плане типа единицы массива. Просто хотел убедиться что код пашет верно. Дальше гуглю. Если поможете будет вам большое спасибо.
не, это путь в плохое программирование. ну var_dump($var[$i]['account']) смотри. хз что там сидит =))))))) дружище, ну... в программировании есть порядок выполнения операций. Что по-твоему происходит на этих строках?
Я согласен что это путь в плохое программирование, но все учатся на ошибках, задают вопросы, это нормально. Мне практически не у кого спросить... нету друзей почти разбирающихся... а сам хочу научиться. Хочу быть программистом. да я поторопился, имел ввиду наоборот тороплюсь просто Код (Text): $vivod = $var[$i]['account']; вот что в дампе сидит Код (Text): Notice: Array to string conversion in C:\inetpub\wwwroot\dblibpdo\index.php on line 224 if 2 Array['account'] string(15) "supertest123441" 1 И ещё появились вопросы по html именно по защите от дурака или хакера, то есть запрет ввода других данных кроме положенных в текст бокс Это понято что этим ограничивают длину строки http://htmlbook.ru/html/input/maxlength Это понятно что этим по сути ограничивают ввод. Но понятно что не понятно как задать туда циферки и все буквы? http://htmlbook.ru/samhtml5/formy/zashchita-ot-duraka При указании ^[a-zA-Z]+$ Любые латинские буквы. ^[ 0-9]+$ Любое количество цифр Вместе... ничего не выходит, дальше указания данных не идет задача Т.е. выходит нужен правильный шаблон ввода допускающий цифры и буквы и ничего более И есть ещё один вопрос, как сделать так что бы при отсутствии символа собачки @ в почте и начала с доменом, выводилась ошибка и логин не решался? т.е. надо какую то проверку текста делать? или есть какие либо способы?
Не понял зачем используете PDO::fetchObject(). Может лучше PDOStatment::fetchAll() - вернет ассоциативный массив. Типа как Код (Text): $result=$this->_db->query($query)->fetchAll(PDO::FETCH_ASSOC); здесь $this->_db - PDO-коннект к БД. И, извините мою дотошность, у Вас используется триггер FOR INSERT (т.е. то, что должно произойти перед вставкой данных). Однако в теле триггера (строка 48-49) Вы ссылаетесь на вставляемые данные Код (Text): SELECT ... FROM ACCOUNT_TBL причем, по отсутствию условия WHERE - предполагаете, что там содержится единственная запись. Во-первых, данные еще не вставлены, и Вы их можете не увидеть при определенных настройках TRANSACTION ISOLATION LEVEL. Во-вторых, на момент срабатывания триггера в таблице могут уже быть какие-то данные. Поэтому рекомендую использовать специальную табличку inserted. Ну и далее по коду триггера (строки 72-73) вставка в ту же самую таблицу Код (Text): INSERT INTO ACCOUNT_TBL ... рекурсивно вызовет срабатывание триггера. 1. Если используется одна и та же табличка надо использовать триггер AFTER INSERT и в нем прописать UPDATE нужных полей. Т.е. из inserted получаете данные, трансформируете их как Вам надо, обновляете нужные поля. 2. Если для хранения конечных данных должна использоваться другая таблица - пишете триггер AFTER INSERT, из inserted получаете данные, преобразовываете их, сохраняете куда надо и в конце либо DELETE вставленной записи, либо TRUNCATE таблицы (как у Вас в комментариях к триггеру)