За последние 24 часа нас посетили 62448 программистов и 1743 робота. Сейчас ищут 918 программистов ...

Зачем применять конкатенацию в данном случае?

Тема в разделе "PHP для новичков", создана пользователем RazerVG, 7 сен 2014.

  1. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Учусь по книге Изучаем PHP и MySQL
    Не понимаю зачем в куске кода(ниже) сделана конкатенация

    Код (Text):
    1.  
    2. while ($row = mysqli_fetch_array($result)) {
    3.     echo '<input type="checkbox" value=" ' . $row['id'] . ' " name="todelete[]"> ';
    4. .............
    Первые ковычки понятно тк html код. Даллее в двойных переменная. А вот следующий код как обьяснить?
    Код (Text):
    1. ' . $row['id'] . '
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Чтож там за книга такая, где нет объяснения? Вам суда:
    php.net/manual/ru/language.operators.string.php
     
  3. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    это там есть только почему именно так, а не так например
    Код (Text):
    1. <input type="checkbox" value="$row['id']" name="todelete[]"> ';
    или
    Код (Text):
    1. <input type="checkbox" value=" '$row['id']' " name="todelete[]"> ';
    ???
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Кавычки

    А во-вторых, вы как тут без них предлагаете обходиться?
     
  5. RazerVG

    RazerVG Активный пользователь

    С нами с:
    5 дек 2013
    Сообщения:
    103
    Симпатии:
    0
    Вот так
    Код (Text):
    1. <input type="checkbox" value=" '$row['id']' " name="todelete[]"> ';
    Добавлено спустя 2 минуты 34 секунды:
    Вот обычно же так делаем

    Код (Text):
    1. value="<?php echo $row['id'];?>">
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Код (PHP):
    1. echo '<input type="checkbox" value=" ' . $row['id'] . ' " name="todelete[]"> ';
    может так будет яснее.

    А твоя конструкция не работоспособна
     
  7. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    А не вру, вся конструкция-то в одинарных
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Переменные обрабатываются только в двойных кавычках
     
  9. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    vs, да, да, да
    А если так?
    Код (Text):
    1. echo '<input type="\text\" value=';
    2.  echo $row['id'];
    3.    echo 'name=\"todelete[]\">';
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Так норм, потому что переменная не в кавычках. Кстати, даже в двойных кавычках, так просто к элементу массива не обратишься. Нужны скобки
    Код (Text):
    1.  
    2. echo "{$row['id]}";
     
  11. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Код (Text):
    1. Нужны скобки
    Конечно, он захватывает максимум символов. Мне другое не очень понятно: почему в sql-запросах
    можно брать переменные в одинарные кавычки или интерпретатор отдает sql-серверу сразу при разборе
     
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Всмысле не совсем понял о каком случае идет речь. Покажи пример скажу.
     
  13. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Необязательно с sql

    Код (Text):
    1. $i='Hello';
    2. echo "('$i' )";
    Скорее со скобками.
    А ну хотя понял, тут ' интерпретируется как символ в строке.

    Или допустим:
    Код (Text):
    1. $result = mysql_query("select * from  news where head like '%$search%' limit 20")
    переменная в скобках
     
  14. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    И что не понятно? Скобки тут причем? Ты запусти поэксперементируй разобраться же совсем просто.

    Может ты хочешь сказать кавычки?

    '%$search%' а если без кавычек mysql пропустит?
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Имеют значения только внешняя пара кавычек. Т.е. начинаются они с ' или ".
     
  16. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Видел часто в запросах в скобках много точек, кавычек и т.д. Mysql, ведь, принимает в одинарных кавычках, навороты и хитросплетения, оказывается, от незнания.
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    SQL и PHP это совершенно разные и не связанные друг с другом языки.

    Добавлено спустя 8 минут 44 секунды:
    В SQL двойные и одинарные кавычки эквивалентны. И еще используются обратные кавычки (`) для выделения имен таблиц и полей, чтобы они не воспринимались как слова синтаксиса. К примеру, если таблица называется insert и её указать без апострофов, то возникнет ошибка.
     
  18. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вполне сработает echo "$row[id]". Коряво, но безотказно. Пока в какой-нибудь версии PHP слово id не превратится в зарезервированную константу :)