This question already has answers here:
Closed 12 years ago.
Possible Duplicates:
Reference - What does this symbol mean in PHP?
What does # mean in PHP?
I have a line in my code which looks like this:
#mysql_select_db($dbname) or die( "Error: Unable to select database");
It works, but I want to know what the # does and why it is there.
The # symbol suppresses any errors and notices for the expression it precedes.
See this reference: PHP Error Control Operators
PHP supports one error control
operator: the at sign (#). When
prepended to an expression in PHP, any
error messages that might be generated
by that expression will be ignored.
In this case, the # will suppress the regular PHP database connection error (which may contain sensitive information). In case of a connection error, the "or die" part will be executed, failing with a generic error message. The line is probably copied from a "quick and dirty" example.
Using the error suppression operator # is considered bad style, especially when other forms of error handling are missing. It complicates debugging - how can you find out about in error without any indication that it occured? In a production system it's better to log all errors to a file and suppress the rendering of errors on the page. You could do that in the php.ini file or (if you are on a shared host and not allowed to make config changes) with the following code.
ini_set('display_errors', false);
ini_set('log_errors', true);
ini_set('error_log', '/var/log/apache/php-errors.log');
It suppresses all error output. Generally, you shouldn't use it unless you have a good reason. I don't know why it is used in the example you posted, or why die() is used. The error should be caught and processed accordingly. The select may fail for a number of reasons, some perhaps recoverable. Like no connection to the database established.
Related
This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Closed 9 years ago.
I found this tutorial on making a try it editor for a website.
I understood everything in the code except the # in the result.php:
Result.php
<?php
$myCode = #$_REQUEST["code"];
print $myCode ;
?>
Also I tried removing it from the code and nothing changed, so what does it do?
# is a PHP error control operator
PHP supports one error control operator: the at sign (#). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored
Reference
http://php.net/manual/en/language.operators.errorcontrol.php
Example
<?php
/* Intentional file error */
$my_file = #file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = #$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
It ignores/suppresses error messages - see Error Control Operators in the PHP manual.
PHP supports one error control operator: the at sign (#). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
If you have set a custom error handler function with set_error_handler() then it will still get called, but this custom error handler can (and should) call error_reporting() which will return 0 when the call that triggered the error was preceded by an #.
so any error in $myCode = #$_REQUEST["code"]; will be ignored.
This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Closed 9 years ago.
I'm learning object oriented php.
I've come across some code I don't fully understand.
This code is within a class.
1) code that uses #.
For example:
$this->image = #imagecreatefromgif($filename);
Can some one explain the uses of #.
2)
Also it looks like the script is declaring variables in a way i'm not used to (the $var way).
For example:
$this->ext = $size['mime'];
$ext is not declared before this code is used, but it used after it. Does this create an $ext variable within the object?
Thanks guys!!
The # will suppress errors so that no errors will be shown for that expression.
http://php.net/manual/en/language.operators.errorcontrol.php
# is php's error suppression operator you should never use it
You should handle error instead ignoring and advantage would be you will get long notice which is helpful to debug too
And worst case would be below as described in manual
Currently the "#" error-control operator prefix will even disable error reporting for critical errors that will terminate script execution. Among other things, this means that if you use "#" to suppress errors from a certain function and either it isn't available or has been mistyped, the script will die right there with no indication as to why.
# Means "Suppress warning when calling this function".
This question already has answers here:
What is the use of the # symbol in PHP?
(11 answers)
Closed 9 years ago.
What is the meaning of ##variable in php ?
$fix=##parts;
# is used to suppress any errors that may occur on this line of the code
http://php.net/manual/en/language.operators.errorcontrol.php
When prepended to an expression in PHP, any error messages that might
be generated by that expression will be ignored.
I would not recommend using it at all because this may result in failure of noticing some important error/warning and make debugging a havoc. On a production environment use error_reporting setting that will prevent any errors or warning from showing up while on a development server I would recommend to turn on any error reporting
PHP supports one error control operator: the at sign (#). When
prepended to an expression in PHP, any error messages that might be
generated by that expression will be ignored.
Link : PHP.net explanation
The #operator turns off error handling.
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
What is the use of # symbol in php?
PHP functions and #functions
What does the “#” symbol do in SQL?
Often when looking through online resources / questions including code on this website, I often come across the '#' operator.
In the PHP code I see, the # operator generally comes before a method such as #fread(). However, by the looks of the code, it wouldn't have actually made a difference whether or not fread() was called with or without the '#' in front of the method.
In the MySQL code, the # operator generally comes before a column/field name. I believe that the # is used to access a default variable instantiated at some point manually by the user, alike to an env variable in PHP.
Please can you tell me if my assumptions are correct, and if not, when and why the '#' sign or operator should in fact be used?
Thanks,
Max.
In PHP it means suppress any notices/warnings raised by this function eg mail() will throw an error when it fails to send. You can do
$Success = #mail(...)
To suppress the error and handle success/failure yourself. See the Error Control Operator page for more information.
In MySQL, # is used to prefix user-defined variables
In PHP the at sign (#) denotes that any error messages that might be generated by that expression will be ignored.
In MySQL the # before a name denotes a local, user-defined variable.
This question already has answers here:
Closed 13 years ago.
Possible Duplicate:
What is the use of # symbol in php?
I like to know the purpose and meaning of # in php codes.
For instance, #umask or #ini_set. What's the difference without # and with #?
PHP's error suppress operator used to suppress error messages.
SideNote: Avoid it as much as you can, also it slows down performance heavily and not allowed to be used in ini_get and ini_set functions in future php versions.
"Swallow an error", continue despite an error occuring. An non-critical operation augmented with # will not abort script execution.
# symbol is an error control operator check out manual here