|
|
|
новичок
      
участник
Last Login: 13.06.2007 15:50
Сообщ.: 3,
Visits: 6
|
|
| Здравствуйте. У меня проблема. Как сделать проверку Если в таблице user_item с char_id=$top['char_id'] есть item_type='4037' то он делает апдейт запрос, а если нету то делает инсерт. Подскажите Пожалуйста. <? If ($_GET['smsnumber']==1111) { $coin=1; } Elseif ($_GET['smsnumber']==2222) { $coin=2; } Elseif ($_GET['smsnumber']==3333) { $coin=3; } mssql_connect ("", "sa", "") or die ('MySQL connect failed'); mssql_select_db("lin2world") or die('Cannot connect to database'); $sql = mssql_query("select * from user_data where char_name='".$_GET['nick']."'") or die ("Query failed"); while ($top = mssql_fetch_array($sql)) { $ddd = mssql_query("select * from user_item where char_id='".$top['char_id']."' and item_type='4037'") or die ("Query failed"); while ($vvv = mssql_fetch_array($ddd)) { $account=$vvv['amount']+$coin; $ttt = mssql_query("update user_item set amount='".$account."' where char_id='".$top['char_id']."' and item_type='4037'") or die ("Query failed"); } } ?>
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Раз у тебя MS SQL Server, то все можно сделать в одном запросе mssql_query( "IF EXISTS (SELECT * FROM user_item WHERE char_id='".$top['char_id']."' AND item_type='4037'". " UPDATE user_item SET ....". " ELSE ". " INSERT .... " ); Кроме того зря ты подключаешься к базе как администратор. Это очень опасно. Особенно с учетом того что в твоем коде нет проверки вводимых пользователем данных и твой код уязвим для SQL Injection атак.
|
|
|
|
|
новичок
      
участник
Last Login: 13.06.2007 15:50
Сообщ.: 3,
Visits: 6
|
|
| Может я что-то не так пишу, но у меня выдает ошибку вот такую: Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\coinofluck.php on line 18 <? If ($_GET['smsnumber']==1111) { $coin=1; } Elseif ($_GET['smsnumber']==2222) { $coin=2; } Elseif ($_GET['smsnumber']==3333) { $coin=3; } mssql_connect ("", "sa", "") or die ('MySQL connect failed'); mssql_select_db("lin2world") or die('Cannot connect to database'); $sql = mssql_query("select * from user_data where char_name='".$_GET['nick']."'") or die ("Query failed"); while ($top = mssql_fetch_array($sql)) { while ($vvv = mssql_fetch_array($ddd)) { $account=$vvv['amount']+$coin; $ddd = mssql_query("IF EXISTS (SELECT * FROM user_item WHERE char_id='".$top['char_id']."' AND item_type='4037'"." update user_item set amount='".$account."' where char_id='".$top['char_id']."' and item_type='4037'"." ELSE "." INSERT INTO user_item (char_id,item_type,amount) VALUES (".$top['char_id'].",4037,".$account.")"); } } ?>
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| В запросе есть ошибки. Я забыл закрыть скобку и в INSERTе по-моему не хватает кавычек. Изменения выделены красным. mssql_query("IF EXISTS (SELECT * FROM user_item WHERE char_id='".$top['char_id']."' AND item_type='4037')"." UPDATE user_item SET amount='".$account."' WHERE char_id='".$top['char_id']."' AND item_type='4037'"." ELSE "." INSERT INTO user_item (char_id,item_type,amount) VALUES ('".$top['char_id']."','4037','".$account."')"); Обрати внимание что результат mssql_query не нужно запонимать, потому что он все равно пустой. Вообще в таких случаях помогает распечатка запроса. Так проще визуально выделить ошибки.
|
|
|
|
|
новичок
      
участник
Last Login: 13.06.2007 15:50
Сообщ.: 3,
Visits: 6
|
|
| Я немного переписал скрипт и получилось вот это. Незнаю как на php делать result <? If ($_GET['smsnumber']==1111) { $coin=1; } Elseif ($_GET['smsnumber']==2222) { $coin=2; } Elseif ($_GET['smsnumber']==3333) { $coin=3; } mssql_connect ("", "sa", "") or die ('MySQL connect failed'); mssql_select_db("lin2world") or die('Cannot connect to database'); $sql = mssql_query("select * from user_data where char_name='".$_GET['nick']."'") or die ("Query failed"); while ($top = mssql_fetch_array($sql)) { $ggg = mssql_query("select * from user_item where char_id='".$top['char_id']."' and item_type='4037'") or die ("Query failed"); while ($fff = mssql_fetch_array($ggg)) { If (mssql_result($ggg)=True) { echo "Сейчас сделаем Update запрос"; } Elseif (mssql_result($ggg)=False) { echo "Cейчас сделаем insert запрос"; } } } ?>
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Тебе поможет функция mssql_num_rows $r = mssql_query("select * from user_item where char_id='".$top['char_id']."' and item_type='4037'"); if (FALSE !== $r) { if (1 === mssql_num_rows($r)) { // Update } else { // Insert } }
|
|
|
|