Переменная PHP в операторе выбора - PullRequest
4 голосов
/ 13 августа 2010

Я написал этот PHP-скрипт, который работает, и теперь я хочу изменить имя строки на переменную (не уверен, что строка правильная), я имею в виду «имя» из select имя ... Я попробовал почти все, но ничего не дало мне правильный результат.Я знаю, что обычная вещь, как я могу использовать переменные в выражении типа ("'. $ Var.'"), Не будет работать.

<?php
require_once 'config.php';

$id = $_GET["id"]; //ID OF THE CURRENT CONTACT
$user = $_GET["user"];  //ID OF THE CURRENT USERS

$query = mysql_query("SELECT name FROM contacts WHERE contact_id='". mysql_real_escape_string( $id ) ."' and user_id='1';");

$retval = mysql_fetch_object($query)->name;

$retval = trim($retval);
echo $retval;
?>

Ответы [ 7 ]

4 голосов
/ 09 апреля 2014

Это намного проще, не так ли?

$sql_insert = 
"INSERT INTO customers (        
`name`,
`address`,
`email`,
`phone`
) 
VALUES (        
'$name',
'$address',     
'$email',
'$phone'
)";
3 голосов
/ 20 ноября 2012

Вы можете использовать это как-то так.В настоящее время я предполагаю, что вы получаете только одну строку назад и хотите использовать только одно поле.

<?php
require_once 'config.php';

$id = $_GET["id"]; //ID DES DERZEITIGEN KONTAKTES
$user = $_GET["user"];  //ID DES DERZEITIGEN USERS

//Use variable inside closures `` and just in case escape it, depends how you get variable
$query = mysql_query("SELECT `".mysql_real_escape_string($variable)."` FROM contacts WHERE contact_id='". mysql_real_escape_string( $id ) ."' and user_id='1';");


if (!$query) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($query); //Retriev first row, with multiple rows use mysql_fetch_assoc
$retval = $row['0']; //Retriev first field

$retval = trim($retval); 
echo $retval;
?>
3 голосов
/ 13 августа 2010

Это то, что вы ищете?Даже ваш вопрос по-немецки мне не совсем понятен:

$field = 'name';
$query = mysql_query("SELECT $field FROM contacts WHERE contact_id='". mysql_real_escape_string( $id ) ."' and user_id='1';");
$retval = mysql_fetch_object($query)->$field;
2 голосов
/ 13 августа 2010
  • Пожалуйста, пишите на английском. Все остальные делают.
  • Попробуйте использовать другой метод извлечения - извлеките ассоциативный массив, затем используйте динамический параметр, чтобы получить любой столбец, который вам нужен.
  • Рассматривали ли вы возможность использования PDO?
1 голос
/ 13 августа 2010

Я полагаю, что вы путаете вопросы (непреднамеренно) из-за того, что вы используете слово «строка».Судя по вашему примеру, вы имеете в виду поле / столбец.Похоже, вы хотите указать поля для выбора с помощью переменной, которая может быть сделана любым из этих методов ...

$fields = "name, age";

$sql = "SELECT $fields FROM table";
$sql = "SELECT {$fields} FROM table";
$sql = "SELECT ".$fields." FROM table";

NB важно, чтобы у вас была безопасная датав элементе $ fields я бы предложил использовать белый список допустимых значений, например

// assuming $_POST['fields'] looks something like array('name','age','hack');
$allowed = array('name', 'age');
$fields = array();

foreach ($_POST['fields'] as $field) {
   if (in_array($field, $allowed)) {
      $fields[] = $field;
   }
$fields = implode(', ', $fields);
0 голосов
/ 13 августа 2010

Никогда не следует помещать переменную в список полей.
Если хотите указать имя поля переменной, выберите * а затем используйте вашу переменную, чтобы получить конкретное поле

<?php
require_once 'config.php';

$id = mysql_real_escape_string($_GET["id"]); //ID DES DERZEITIGEN KONTAKTES
$user = $_GET["user"];  //ID DES DERZEITIGEN USERS

$query  = "SELECT * FROM contacts WHERE contact_id='$id' and user_id='1'";
$result = mysql_query($query) or trigger_error(mysql_error().$query);

$row = mysql_fetch_array($result);

//and finally
$fieldname = "name";
$retval = $row[$fieldname];

echo $retval;
?>
0 голосов
/ 13 августа 2010

Разве это не сработает?

$result = mysql_fetch_array($query);

echo trim($result['name']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...