2016-12-10 1 views
0

Как связать это значение php с целыми кавычками в sql-запросе, чтобы оно сохранялось как правильно в базе данных phpmyadmin?concat php value с целыми кавычками в sql-запросе

$db = new mysqli('localhost','root','','geo'); 

// Each value is a placeholder 

$sql = "UPDATE file_contents SET Origin_URL = CONCAT('https://www.google.com/maps/dir/', ?, ',' ?, '/', ?, ',', ?) WHERE Sl = 1 LIMIT 6"; 

$stmt = $db ->prepare($sql); 

// First parameter should correspond to number and types of your arguments 
// You have 5, first four are strings, fifth is a number, so "ssssd" 

$stmt->bind_param($OriginLatId,$OriginLongId,$DestinationLatId,$DestinationLongId); 

$stmt->execute(); 

Пожалуйста, помогите мне получить правильный запрос SQL, чтобы вставить этот адрес в моей базе данных успешно, это таблица, и я сделал столбец Origin_URL в столбец VARCHAR. Данные идут в этот столбец.

This is table, and I have made the Origin_URL column into a varchar column. The data goes into this column.

+1

Использовать одинарные кавычки для инкапсуляции строки SQL. Также это 'sql-server' или' mysql'? Посмотрите на выделение 'CONCAT (" 'и вы должны увидеть эту проблему. Кроме того,' + 'используется для математики в PHP, для того, чтобы конкатенировать использование' .'. – chris85

+0

Здесь я использую базу данных phpmyadmin, чтобы сохранить это значение в столбце Origin_URL – Unnati

+0

Результат, полученный после эхо-значения $ val1 в php, требуется в sql-форме запроса. Обратно help. – Unnati

ответ

-1

Существует ряд проблем с вашей конкатенацией строк: + для добавления, переменные в одинарных кавычках - это строки, а не переменные, и вы, кажется, добавляете кавычки в слишком многих случаях.

Вы должны быть в состоянии построить свою строку со сложными фигурными скобками в двойных кавычках:

$val1 = "https://www.google.com/maps/dir/{$OriginLatId},{$OriginLongId}/{$DestinationLatId},{$DestinationLongId}"; 

Вы можете прочитать об этом здесь, http://php.net/manual/en/language.types.string.php.

или стандартной конкатенация:

$val1 = 'https://www.google.com/maps/dir/' . $OriginLatId .',' . $OriginLongId . '/' . $DestinationLatId . ',' . $DestinationLongId; 

Вы можете прочитать об этом здесь, http://php.net/manual/en/language.operators.string.php.

Тогда просто напишите это в БД. Нет необходимости в функции mysql concat.

$sql = 'UPDATE file_contents 
SET Origin_URL = ? 
WHERE Sl = 1 LIMIT 6'; 
$stmt = $db->prepare($sql); 
$stmt->bind_param('s', $val1); 
$stmt->execute(); 
+0

Спасибо, много, спасибо! Он работает сейчас. – Unnati

0

Никогда CONCAT SQL запросов в PHP или любой другой язык, который поддерживает привязку заявления (что практически любой современный язык есть).

Чтобы использовать операторы связывания необходимо сначала подготовить его:

// Each value is a placeholder 
$sql = "UPDATE file_contents SET Origin_URL = CONCAT('https://www.google.com/maps/dir/', ?, ',' ?, '/', ?, ',', ?) WHERE Sl = ?"; 

$stmt = $db->prepare($sql); 

// First parameter should correspond to number and types of your arguments 
// You have 5, first four are strings, fifth is a number, so "ssssd" 
$stmt->bind_param('ssssd', $OriginLatId, $OriginLongId, $DestinationLatId, $DestinationLongId, $id); 
$stmt->execute(); 
+0

Пожалуйста, проверьте, что я отредактировал и выполнил в соответствии с вашим кодом, я получаю ошибку как Fatal error: Uncaught Error: вызов функции-члена bind_param() на boolean в C: \ xampp \ htdocs \ GeoProj \ execute.php: 264 Трассировка стека: # 0 {main} выбрано в C: \ xampp \ htdocs \ GeoProj \ execute.php в строке 264 – Unnati

0

Я хотел бы предложить вам использовать PDO

<?php 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
?> 

После получения соединения вы можете подготовить ваше заявление

<?php 
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 

// insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 

// insert another row with different values 
$name = 'two'; 
$value = 2; 
$stmt->execute(); 
?> 

Ожидаете, это поможет вам

+0

Это всего лишь пример PDO, почему бы просто не опубликовать ссылку на руководство в качестве комментария ? – chris85

+0

http://php.net/manual/en/pdo.prepared-statements.php здесь ссылка на поддержку PDO php –

Смежные вопросы