代码之家  ›  专栏  ›  技术社区  ›  mikepenz

select语句中的php变量

  •  4
  • mikepenz  · 技术社区  · 14 年前

    我已经编写了这个正在运行的PHP脚本,现在我想将行名更改为变量(不确定行是否正确),我的意思是 选择 名称 … 我几乎什么都试过了,但没有什么能给我正确的结果。 我知道在一个像(‘’这样的语句中如何使用变量是很正常的事情。$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 回复  |  直到 7 年前
        1
  •  4
  •   CMPS    11 年前

    这样容易多了,不是吗?

    $sql_insert = 
    "INSERT INTO customers (        
    `name`,
    `address`,
    `email`,
    `phone`
    ) 
    VALUES (        
    '$name',
    '$address',     
    '$email',
    '$phone'
    )";
    
        2
  •  3
  •   wimvds    14 年前

    这是你要找的吗?即使你的德语问题对我来说也不是很清楚:

    $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;
    
        3
  •  3
  •   Aivar    12 年前

    你可以这样做。目前我假设您只返回一行,并且只想使用一个字段。

    <?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;
    ?>
    
        4
  •  2
  •   tdammers    14 年前
    • 请用英语邮寄。其他人都有。
    • 尝试使用不同的获取方法-获取关联数组,然后使用动态参数来检索所需的列。
    • 你考虑过使用PDO吗?
        5
  •  1
  •   Peter O'Callaghan    14 年前

    我相信由于你使用了“row”这个词,你(无意中)把事情搞混了。从你的例子来看,你指的是字段/列。听起来您希望使用一个变量指定要选择的字段,这个变量可以通过这些方法中的任何一种来完成…

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

    重要的是在$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);
    
        6
  •  0
  •   Andrei Serdeliuc ॐ    14 年前

    这不管用吗?

    $result = mysql_fetch_array($query);
    
    echo trim($result['name']);
    
        7
  •  0
  •   Your Common Sense    14 年前

    不应将变量放入字段列表中。
    如果需要变量字段名,请选择* 然后使用变量获取特定字段

    <?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;
    ?>