12.12.2014, 20:20
Quote:
You can use the operator IS NULL to check if the value is NULL or not.
Код:
SELECT * FROM table_name WHERE field_name IS NULL |
You can use the operator IS NULL to check if the value is NULL or not.
Код:
SELECT * FROM table_name WHERE field_name IS NULL |
mysql_format(MySQLConnect, query, 256, "SELECT * FROM vehs WHERE Proprio = '%s'", NameRequete[playerid]);
mysql_tquery(MySQLConnect, query, "CarTaxi", "i", playerid);
forward CarTaxi(playerid);
public CarTaxi(playerid)
{
new rows = cache_num_rows(),
string_total[256],
stringveh[50];
for(new i = 1; i < rows+1; i++)
{
if(!IsABike(i))
{
format(stringveh, sizeof(stringveh), "%s\n", GetVehicleName(i));
strins(string_total, stringveh, strlen(string_total));
IdVehTaxi[playerid] = i;
}
}
return ShowPlayerDialog(playerid, 11, DIALOG_STYLE_LIST, "Taxi:", string_total, "Ok", "Quit");
}
public OnFilterScriptInit( )
{
mysql_pquery( 1, "SELECT `Key` FROM `Accounts`", "ChangePassword" );
return 1;
}
function ChangePassword( )
{
new liRows = cache_get_row_count( ), liKey;
for( new rowid = 0; rowid < liRows; rowid ++ )
{
liKey = cache_get_row_int( rowid, 0 );
format( gsQuery, 1024, "UPDATE `Accounts` SET `Password` = '%s' WHERE `Key` = %d", SHA512_Account( liKey, gsString, "password" ), liKey );
mysql_pquery( 1, gsQuery );
// because SHA512_Account function has been executed, the result set is now empty and the following rows are returning only 0. I think that this result set is deleted when the one from mysql_query is created and activated.
}
}
stock SHA512_Account( key, salt[ ], password[ ] )
{
format( gs_lsString, 129, "SELECT sha2( '%d%s%s', 512 )", key, salt, mysql_escape_stringEx( password ) );
giCache = mysql_query( 1, gs_lsString );
cache_get_row( 0, 0, gs_lsString, 1 );
cache_delete( giCache );
return gs_lsString;
}
[debug] #0 native mysql_format () from mysql_static.so [debug] #1 00000010 in public OnRemoteRCONPacket () at <unknown file>:0 [debug] #2 002c7fa0 in public CheckStatus () at C:\Users\Ati\Desktop\SERVER\gamemodes\nmss.pwn:61710 [2014/12/13 21:51:10] [debug] Run time error 4: "Array index out of bounds" [2014/12/13 21:51:10] [debug] Accessing element at index 2916256 past array upper bound 17 [2014/12/13 21:51:10] [debug] AMX backtrace: [debug] #0 native mysql_format () from mysql_static.so [debug] #1 002c801c in FixGameString (string[]=@0x003ef9a8 "~b~~h~J") at C:\Users\Ati\Desktop\SERVER\gamemodes\nmss.pwn:61712 [debug] #2 002d0cbc in public OnRemoteRCONPacket (ipaddr[]=@0x00000000 "", port=0, password[]=@0x00000000 "", command[]=@0x00000000 "") at C:\Users\Ati\Desktop\SERVER\gamemodes\nmss.pwn:62426 [debug] #3 002c7fa0 in FixGameString (string[]=@0x003ef9a8 "~b~~h~J") at C:\Users\Ati\Desktop\SERVER\gamemodes\nmss.pwn:61710 [debug] #4 002d0cbc in public CheckStatus () at C:\Users\Ati\Desktop\SERVER\gamemodes\nmss.pwn:62426 [2014/12/13 21:51:10] [debug] Native backtrace: [debug] #0 b747a66b in _ZN10StackTraceC1EPv () from plugins/crashdetect.so [debug] #1 b74735bf in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so [debug] #2 b74748fc in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so [debug] #3 b74753e6 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so [debug] #4 b747a2bc in ?? () from plugins/crashdetect.so [debug] #5 b77cd40c in ?? () [debug] #6 b7117ab7 in _ZN6Native12mysql_formatEP6tagAMXPi () from plugins/mysql_static.so [debug] #7 08094054 in ?? () from ./samp03svr [debug] #8 b660f6e4 in ?? () from plugins/streamer.so [debug] #9 b747455a in _ZN11CrashDetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so [debug] #10 b74790c8 in ?? () from plugins/crashdetect.so [debug] #11 b747c9e5 in amx_Exec () from plugins/crashdetect.so
I guess that you made the system in the wrong way. It is pretty weird. You are surely messing IDs.
-- Is there a way for getting a value from database (with mysql_query) when executing a query (mysql_pquery) without automatically removing the first result set (from mysql_pquery)? |
function ChangePassword( ) { new liRows = cache_get_row_count( ), liKey; new Cache:cache = cache_save(); for( new rowid = 0; rowid < liRows; rowid ++ ) { cache_set_active(cache); liKey = cache_get_row_int( rowid, 0 ); format( gsQuery, 1024, "UPDATE `Accounts` SET `Password` = '%s' WHERE `Key` = %d", SHA512_Account( liKey, gsString, "password" ), liKey ); mysql_pquery( 1, gsQuery ); // because SHA512_Account function has been executed, the result set is now empty and the following rows are returning only 0. I think that this result set is deleted when the one from mysql_query is created and activated. } cache_delete(cache); }
Is there a way for getting a value from database (with mysql_query) when executing a query (mysql_pquery) without automatically removing the first result set (from mysql_pquery)?
|
UPDATE playerinfo SET password_salt = (@salt := sha1(uuid())), password = sha1(CONCAT(sha1('%s'), sha1(@salt))) WHERE id = %d;
This should do:
Код:
function ChangePassword( ) { new liRows = cache_get_row_count( ), liKey; new Cache:cache = cache_save(); for( new rowid = 0; rowid < liRows; rowid ++ ) { cache_set_active(cache); liKey = cache_get_row_int( rowid, 0 ); format( gsQuery, 1024, "UPDATE `Accounts` SET `Password` = '%s' WHERE `Key` = %d", SHA512_Account( liKey, gsString, "password" ), liKey ); mysql_pquery( 1, gsQuery ); // because SHA512_Account function has been executed, the result set is now empty and the following rows are returning only 0. I think that this result set is deleted when the one from mysql_query is created and activated. } cache_delete(cache); } |
stock SHA512_Account( key, salt[ ], password[ ] )
{
new Cache:liCache = cache_save( ); // this
format( gs_lsString, 129, "SELECT sha2( '%d%s%s', 512 )", key, salt, mysql_escape_stringEx( password ) );
giCache = mysql_query( 1, gs_lsString );
cache_get_row( 0, 0, gs_lsString, 1 );
cache_delete( giCache );
cache_set_active( liCache ); // this
return gs_lsString;
}
After using that method, I realised that we need a "native Cache:cache_get_active(connectionHandle = 1);" (getting warning "no active cache" when using cache_save without a query being active), which returns the ID of the active cache (0 if none).
|
+-----------------------------------------+-------------------------------------------------------------------------------------------+ | Variable_name | Value | +-----------------------------------------+-------------------------------------------------------------------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | /usr/ | | big_tables | OFF | | binlog_cache_size | 32768 | | binlog_direct_non_transactional_updates | OFF | | binlog_format | STATEMENT | | bulk_insert_buffer_size | 8388608 | | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | | completion_type | 0 | | concurrent_insert | 1 | | connect_timeout | 10 | | datadir | /var/lib/mysql/ | | date_format | %Y-%m-%d | | datetime_format | %Y-%m-%d %H:%i:%s | | default_week_format | 0 | | delay_key_write | ON | | delayed_insert_limit | 100 | | delayed_insert_timeout | 300 | | delayed_queue_size | 1000 | | div_precision_increment | 4 | | engine_condition_pushdown | ON | | error_count | 0 | | event_scheduler | OFF | | expire_logs_days | 0 | | flush | OFF | | flush_time | 0 | | foreign_key_checks | ON | | ft_boolean_syntax | + -><()~*:""&| | | ft_max_word_len | 84 | | ft_min_word_len | 4 | | ft_query_expansion_limit | 20 | | ft_stopword_file | (built-in) | | general_log | OFF | | general_log_file | /var/run/mysqld/mysqld.log | | group_concat_max_len | 1024 | | have_community_features | YES | | have_compress | YES | | have_crypt | YES | | have_csv | YES | | have_dynamic_loading | YES | | have_geometry | YES | | have_innodb | YES | | have_ndbcluster | NO | | have_openssl | DISABLED | | have_partitioning | YES | | have_query_cache | YES | | have_rtree_keys | YES | | have_ssl | DISABLED | | have_symlink | DISABLED | | hostname | localhost.localdomain | | identity | 0 | | ignore_builtin_innodb | OFF | | init_connect | | | init_file | | | init_slave | | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 1048576 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_buffer_pool_size | 8388608 | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | | | innodb_doublewrite | ON | | innodb_fast_shutdown | 1 | | innodb_file_io_threads | 4 | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 1 | | innodb_flush_method | | | innodb_force_recovery | 0 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 90 | | innodb_max_purge_lag | 0 | | innodb_mirrored_log_groups | 1 | | innodb_open_files | 300 | | innodb_rollback_on_timeout | OFF | | innodb_stats_method | nulls_equal | | innodb_stats_on_metadata | ON | | innodb_support_xa | ON | | innodb_sync_spin_loops | 20 | | innodb_table_locks | ON | | innodb_thread_concurrency | 8 | | innodb_thread_sleep_delay | 10000 | | innodb_use_legacy_cardinality_algorithm | ON | | insert_id | 0 | | interactive_timeout | 28800 | | join_buffer_size | 131072 | | keep_files_on_create | OFF | | key_buffer_size | 8384512 | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit | 100 | | language | /usr/share/mysql/english/ | | large_files_support | ON | | large_page_size | 0 | | large_pages | OFF | | last_insert_id | 0 | | lc_time_names | en_US | | license | GPL | | local_infile | ON | | locked_in_memory | OFF | | log | OFF | | log_bin | OFF | | log_bin_trust_function_creators | OFF | | log_bin_trust_routine_creators | OFF | | log_error | /var/log/mysqld.log | | log_output | FILE | | log_queries_not_using_indexes | OFF | | log_slave_updates | OFF | | log_slow_queries | OFF | | log_warnings | 1 | | long_query_time | 10.000000 | | low_priority_updates | OFF | | lower_case_file_system | OFF | | lower_case_table_names | 0 | | max_allowed_packet | 1048576 | | max_binlog_cache_size | 18446744073709547520 | | max_binlog_size | 1073741824 | | max_connect_errors | 10 | | max_connections | 151 | | max_delayed_threads | 20 | | max_error_count | 64 | | max_heap_table_size | 16777216 | | max_insert_delayed_threads | 20 | | max_join_size | 18446744073709551615 | | max_length_for_sort_data | 1024 | | max_long_data_size | 1048576 | | max_prepared_stmt_count | 16382 | | max_relay_log_size | 0 | | max_seeks_for_key | 18446744073709551615 | | max_sort_length | 1024 | | max_sp_recursion_depth | 0 | | max_tmp_tables | 32 | | max_user_connections | 0 | | max_write_lock_count | 18446744073709551615 | | min_examined_row_limit | 0 | | multi_range_count | 256 | | myisam_data_pointer_size | 6 | | myisam_max_sort_file_size | 9223372036853727232 | | myisam_mmap_size | 18446744073709551615 | | myisam_recover_options | OFF | | myisam_repair_threads | 1 | | myisam_sort_buffer_size | 8388608 | | myisam_stats_method | nulls_unequal | | myisam_use_mmap | OFF | | net_buffer_length | 16384 | | net_read_timeout | 30 | | net_retry_count | 10 | | net_write_timeout | 60 | | new | OFF | | old | OFF | | old_alter_table | OFF | | old_passwords | OFF | | open_files_limit | 1024 | | optimizer_prune_level | 1 | | optimizer_search_depth | 62 | | optimizer_switch | index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on | | pid_file | /var/run/mysqld/mysqld.pid | | plugin_dir | /usr/lib64/mysql/plugin | | port | 3306 | | preload_buffer_size | 32768 | | profiling | OFF | | profiling_history_size | 15 | | protocol_version | 10 | | pseudo_thread_id | 0 | | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 0 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | | rand_seed1 | | | rand_seed2 | | | range_alloc_block_size | 4096 | | read_buffer_size | 131072 | | read_only | OFF | | read_rnd_buffer_size | 262144 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | | report_host | | | report_password | | | report_port | 3306 | | report_user | | | rpl_recovery_rank | 0 | | secure_auth | OFF | | secure_file_priv | | | server_id | 0 | | skip_external_locking | ON | | skip_name_resolve | OFF | | skip_networking | OFF | | skip_show_database | OFF | | slave_compressed_protocol | OFF | | slave_exec_mode | STRICT | | slave_load_tmpdir | /tmp | | slave_max_allowed_packet | 1073741824 | | slave_net_timeout | 3600 | | slave_skip_errors | OFF | | slave_transaction_retries | 10 | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /var/run/mysqld/mysqld-slow.log | | socket | /var/lib/mysql/mysql.sock | | sort_buffer_size | 2097144 | | sql_auto_is_null | ON | | sql_big_selects | ON | | sql_big_tables | OFF | | sql_buffer_result | OFF | | sql_log_bin | ON | | sql_log_off | OFF | | sql_log_update | ON | | sql_low_priority_updates | OFF | | sql_max_join_size | 18446744073709551615 | | sql_mode | | | sql_notes | ON | | sql_quote_show_create | ON | | sql_safe_updates | OFF | | sql_select_limit | 18446744073709551615 | | sql_slave_skip_counter | | | sql_warnings | OFF | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_key | | | storage_engine | MyISAM | | sync_binlog | 0 | | sync_frm | ON | | system_time_zone | IRST | | table_definition_cache | 256 | | table_lock_wait_timeout | 50 | | table_open_cache | 64 | | table_type | MyISAM | | thread_cache_size | 0 | | thread_handling | one-thread-per-connection | | thread_stack | 262144 | | time_format | %H:%i:%s | | time_zone | SYSTEM | | timed_mutexes | OFF | | timestamp | 1419589749 | | tmp_table_size | 16777216 | | tmpdir | /tmp | | transaction_alloc_block_size | 8192 | | transaction_prealloc_size | 4096 | | tx_isolation | REPEATABLE-READ | | unique_checks | ON | | updatable_views_with_limit | YES | | version | 5.1.73 | | version_comment | Source distribution | | version_compile_machine | x86_64 | | version_compile_os | redhat-linux-gnu | | wait_timeout | 28800 | | warning_count | 0 | +-----------------------------------------+-------------------------------------------------------------------------------------------+