Ситуация типичная. Из под PHP пишу запрос в MySQL. В качестве атрибутов запроса юзаю переменные. Со строковыми переменными проблем нет. PHP: <? $sql = "INSERT INTO `users` VALUES (NULL, '".$login."', '".$pass."')"; ?> А вот с целочисленными переменными проблемка.. Не воспринимает их мускуль You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9' at line 1 Подскажите, уважаемые, как вставлять в SQL запросы целочисленные переменные?
Код (Text): <? $sql = "INSERT INTO users(login, pass /* какие у вас столбцы в users */) VALUES ('$login', '$pass')"; ?>
Если "но вообще", то раз уж пишем запрос в кавычках(""), то переменные нады бы в фигурные скобки писать А если разделяете строку то пишите в запрос в апосторфах(''). PHP: <? //Пример: $sql = "Запрос с переменной {$login} на мой вкус лучше так :)"; $sql = 'Строка запроса разделенная для переменной '.$login.' надо писать в апострофах'; ?> 8)
Уважаемые, подскажите, как в данном примере реализовать сабж: PHP: <? $sql = "UPDATE `news` set title='".$title."' name='".$name."' description='".$description."' news_text='".$news_text."' where NewsID= '".$NewsID."'"; ?> Ошибки-с... Спать хочу, не могу разобраться..
Запятые забыл PHP: <? $sql = " UPDATE `news` set title='".$title."'[b],[/b] name='".$name."'[b],[/b] description='".$description."'[b],[/b] news_text='".$news_text."' where NewsID= '".$NewsID."' "; ?>
товарищи. sql_placeholders и забыть вот про этот кошмар: PHP: <? $sql = "UPDATE `news` set title='".$title."' name='".$name."' description='".$description."' news_text='".$news_text."' where NewsID= '".$NewsID."'"; ?>
simpson Sh0t Mavir спасибо, я так и думал, что что-то забыл. Belegnar, нет спал я хорошо. Diver, спасиб, но пока я не готов прибегать к чему то нестандартному.
Добрый день господа! Я недавно вернулся из далекого плавания по другим профессиям и делаю сайт, почти все сделал, но не дал мне Бог понять как сделать двойной запрос, покуда плохо знаю sql. В общем суть проблемы такова на странице нужно извлечь данные из 2-х таблиц по переменной, которая выбирается из сессии. Есть 2 таблицы и переменная :i. $user =& JFactory::getUser(); $i=$user->id; // определяем начальные данные $db_host = 'localhost'; $db_name = 'name'; $db_username = 'user'; $db_password = 'pass'; $db_table_to_show = '1'; $db_table_to_show2 = '2'; $db_table_to_show3 = '3; // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Could not connect: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Could not select DB: " . mysql_error()); // выбираем все значения из таблицы "Contacts" $qr_result = mysql_query("select * from . $db_table_to_show WHERE idclient = $i") or die(mysql_error()); echo '<p></p>'; while($data = mysql_fetch_array($qr_result)){ echo '<p>Номер запроса:<font bacgroundcolor="red"> ' . $data['idzakaz'] . '</font></p>'; echo '<p>Номер детали:<font bacgroundcolor="red"> ' . $data['idpartaccess'] . '</font></p>'; } И вот здесь как-то надо вставить, чтобы выводилось не "while($data = mysql_fetch_array($qr_result)){ echo '<p>Номер запроса:<font bacgroundcolor="red"> ' . $data['idzakaz'] . '</font></p>'; echo '<p>Номер детали:<font bacgroundcolor="red"> ' . $data['idpartaccess'] . '</font></p>'; }", а был второй запрос типа "select * from . $db_table_to_show3 where id='.$data['idpartaccess'].'") и тогда уже выводились значения из 3-ей таблицы типа того же: echo '<p>Номер запроса:<font > ' . $data['id'] . '</font></p>';//из третьей таблички echo '<p>Номер детали:<font > ' . $data['name'] . '</font></p>'; Если поможете - хвала Вам, покуда столько сделать и запороться на такой фигне...
dragomir-onishhenko, вам надо связать две таблицы? Добавлено спустя 2 минуты 24 секунды: если да, то нужно указать внешний ключи во второй таблице как и у первой, а вот потом по этому ключу связать таблицы. вот тут что-то подобное делалось http://php.ru/forum/viewtopic.php?f=9&t=47451
Вроде того, с ключами какая-то лажа, прошу прощения за мой французский, но в целом спасибо за совет, сейчас разберусь полагаю. Добавлено спустя 58 минут 38 секунд: Нет, господа - не могу я понять - убей меня! Хотя не надо. Как сделать так, чтобы получив переменную ИД из сессии он ее приравнял к переменной я понял, даже запрос отсылает к одной таблице по ней, но дальше мне нужно вывести инфу на страницу, из другой таблицы. Короче первый запрос выбирает по ИД строки-поле имя, подставляет его в другой запрос к другой табличке там выбирает по этому значению все строки и эхо все это! У меня такое впечатление что $vg=$idpartaccess в итоге не подставляется, точнее вобще нет переменной $data/// $vg='.$idpartaccess.'; echo $idpartaccess; while($data = mysql_fetch_array($qr_result)){ $sql = mysql_query("select * from . $db_table_to_show3 WHERE id='.$idpartaccess.'") or die(mysql_error()); Вот это не происходит. Я уже как только переменную не обзывал - ничего. Все - я придурок, забыл присвоить переменную $data, но тутже встал второй вопрос создается второй запрос - по идее должен выводить данные, uset($data); на всякий случай сделал, но все равно нефига. Короче весь вопрос остался в том - чтобы мне обычную перменную, которую я подставляю во второй запрос приравнять к массиву первого запроса, пока тольк.... Стоп, мужики! Разобрался - я трижды невнимательное животное, вот ответ: // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Could not connect: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Could not select DB: " . mysql_error()); // выбираем все значения из таблицы "Contacts" $qr_result = mysql_query("select * from . $db_table_to_show WHERE idclient = $i") or die(mysql_error()); echo '<p></p>'; while($data = mysql_fetch_array($qr_result)){ $vg = $data['idpartaccess']; unset($data); $sql = mysql_query("select * from . $db_table_to_show3 WHERE id=$vg") or die(mysql_error()); echo $vg; while($data = mysql_fetch_array($sql)){ echo '<p>Номер запроса:<font bacgroundcolor="red"> ' . $data['id'] . '</font></p>'; echo '<p>Номер детали:<font bacgroundcolor="red"> ' . $data['name'] . '</font></p>'; } } // закрываем соединение с сервером базы данных mysql_close($connect_to_db);
Попробуйте что-то вроде этого файл database.php =============== PHP: <?php $part1_ip = "--.--.--.--"; $part2_name = "Название"; $part3_p = "пароль"; $part4_db = "Название БД"; mb_internal_encoding("UTF-8"); $induction = mysqli_connect($part1_ip, $part2_name, $part3_p, $part4_db); if ($induction == false){ echo "Ошибка"; } ?> Ваш файл =============== PHP: include 'database.php'; $sql = "UPDATE archiv SET views='$views' WHERE id='$post_id'"; mysqli_query($induction , $sql) or die (mysqli_error($induction) ); Добавлено спустя 2 минуты 24 секунды: От модератора: Используйте кнопку </> для вставки кода