Могу ли я написать PHP-код в несколько строк на оператор? - PullRequest
7 голосов
/ 15 июля 2011

Можно ли писать такой код, когда операторы занимают несколько строк?

$db_selected = 
mysql_select_db(
    'my_dbase', 
    mysql_connect(
        'localhost', 
        'mysql_user', 
        'mysql_password'
    )
);

В HTML новые строки игнорируются, но в PHP я иногда получаю ошибки. Я не слишком знаком с PHP, но подумал, что все должно быть хорошо, нет?

Ответы [ 5 ]

9 голосов
/ 15 июля 2011

Нет, но не потому, что вы думаете.Пробелы в порядке, но есть проблема с этим кодом:

mysql_select_db(
    'my_dbase', 
    // don't call mysql_connect here!!!
    mysql_connect( 
        'localhost', 
        'mysql_user', 
        'mysql_password'
    )
);

MySQL connect вернет FALSE в случае ошибки.Это означает, что вы не сможете обработать mysql_error() там И , это приведет к ошибке в mysql_select_db.

Вам лучше:

$conn = mysql_connect( 
        'localhost', 
        'mysql_user', 
        'mysql_password'
) or die( mysql_error() );

mysql_select_db(
    'my_dbase', 
    $conn // optional parameter, but useful nonetheless.
);
7 голосов
/ 19 июля 2011

Я собираюсь ответить на свой собственный вопрос: просто попробовал это и на моем LAMP-сервере оригинально размещенный фрагмент кода работает просто отлично (php 5).

Так что да, вы можете разделить утверждениявключая операторов с несколькими строками.

И ответ с конкатенацией строк - да, на этом форуме уже есть множество ответов об этом, но я спрашивал об утверждениях, а не о строках, которые я не могнайти ответ в другом месте.

Спасибо всем!Особенно Geroge Cummins.

3 голосов
/ 15 июля 2011

Да, все в порядке, если после операторов нет новых строк, таких как =, in, == и т. Д ...

2 голосов
/ 15 июля 2011

Да, но для определенных вещей, таких как текст, я делаю что-то вроде ...

$someText = " blah blah blah ".
"some more blah blah blah";

Надеюсь, это поможет

1 голос
/ 15 июля 2011

Пробелы обычно игнорируются, поэтому вы можете вставлять разрывы строк по мере необходимости. Однако каждый оператор должен заканчиваться точкой с запятой (;).

...