За последние 24 часа нас посетил 16861 программист и 1641 робот. Сейчас ищут 885 программистов ...

Запрос к базе не всегда работает

Тема в разделе "PHP и базы данных", создана пользователем Iwan, 3 янв 2010.

  1. Iwan

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

    С нами с:
    3 янв 2010
    Сообщения:
    5
    Симпатии:
    0
    PHP:
    1. $sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName  = ".$_REQUEST['ID'];
    2. $result_sellerdetails = mysql_query($sql_sellerdetails);
    3. <?php print "<table>\n";
    4. while ($line = mysql_fetch_array($result_sellerdetails)) {
    5. print "\t<tr>\n";
    6. for ($i=0;$i<=9;$i++) { print "\t\t<td>$line[$i]</td>\n"; }
    7. print "\t</tr>\n";
    8. }
    9. print "</table>\n";
    10. /* Освобождение памяти, занятой результатом запроса */
    11. mysql_free_result($result_sellerdetails); ?>
    при запросе index3.php?ID=22 - работает
    а при запросе index3.php?ID=xxx - не ищет

    как правильно поправить, при чем xxx должно точно совпадать, а не содержать?
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Потому что символьные данные должны быть в ''.

    [sql]select * from seller_profile WHERE seller_profile.CompanyName = 'MyCompany'[/sql]

    Ну и не забываем про sql-инъекцию и прочие прелести безопасности.
     
  3. Iwan

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

    С нами с:
    3 янв 2010
    Сообщения:
    5
    Симпатии:
    0
    [sql]$sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName = '".$_REQUEST['ID']';[/sql]
    как правильно?
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Что как правильно?
     
  5. Iwan

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

    С нами с:
    3 янв 2010
    Сообщения:
    5
    Симпатии:
    0
    Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING

    ковычки как правильно поставить, поставил как написал пишет ошибку

    [sql]Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING[/sql]
     
  6. Iwan

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

    С нами с:
    3 янв 2010
    Сообщения:
    5
    Симпатии:
    0
    $sql_sellerdetails = ("select * from seller_profile WHERE seller_profile.CompanyName = '$_REQUEST[SellerID]'");

    во так работает
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    так правильно.
     
  8. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    так оно не может работать.
     
  9. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    гм. Почему?
     
  10. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    м, хотя да, там двойные кавычки вначале. может оно так работать)
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    DarkElf
    По идее не должно. Там не экранированный массив в строке...
     
  12. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ? Что такое "не экранированный массив"?
     
  13. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Simpliest
    Ну как бэ:
    $a="Это первый элемент массива {$arr[1]}";
     
  14. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    И?

    PHP:
    1. <?php
    2. $a = array('a','b','c');
    3. echo "first element of array $a[0]";
    4. echo "<br>";
    5. $b = array('foo'=>'a','boo'=>'b','roo'=>'c');
    6. echo "second element of array $b[boo]";
    Upd:
    Вот рекомендую
    http://ua2.php.net/manual/en/language.t ... ng.parsing
    смотреть пример с разной нотацией массива в строке.
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    вот так будет работать нах =)
    PHP:
    1.  
    2. <?
    3.  
    4. $sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName  = '".mysql_real_escape_string($_REQUEST['ID'])."'");
    5. ?>
     
  16. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    PHP:
    1. <?
    2. $sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName  = ?";
    3. $db->bind_param('s', $_REQUEST['ID']);
    4. ?>
     
  17. Iwan

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

    С нами с:
    3 янв 2010
    Сообщения:
    5
    Симпатии:
    0
    так ошибку пишет [sql]Parse error: parse error, unexpected T_STRING in[/sql]

    [sql]# <?
    #
    # $sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName = '".mysql_real_escape_string($_REQUEST['ID'])."'");
    # ?>[/sql]

    parse error, unexpected ')' in пишет

    [sql]# <?
    # $sql_sellerdetails = "select * from seller_profile WHERE seller_profile.CompanyName = ?";
    # $db->bind_param('s', $_REQUEST['ID']);
    # ?>[/sql]
    Fatal error: Call to a member function bind_param() on a non-object in пишет

    а еще точка перед $_REQUEST мешала. Точка зачем поидее ставится.