PHP - 插入可变数据以进行内爆

时间:2015-02-12 01:21:09

标签: php mysql

对于你们中的一些人来说这可能是非常基本的但我真的无法理解@。@

我想在此行中插入$x(".implode(",",array_keys($data)).")$rid$values = implode("','", array_values($data));

代码:

if(count($data)){
    $x = "rid";
    $rid=$_SESSION['rid'];
    $values = implode("','", array_values($data));
    mysql_query("insert into appetizer (".implode(",",array_keys($data)).") values ('".$values."')");

    if(mysql_insert_id()) return mysql_insert_id();
    return 0;
}

我怎么可能这样做?

对noob问题道歉:3

1 个答案:

答案 0 :(得分:2)

如果您想推送这些值并将其设为键对值并且不介意任何订单,请相应地进行分配。

在数组中推送值,然后内爆。无需对内爆字符串进行更改。

if(count($data) > 0){
    // key-pair values to be appended
    $x = "rid"; // the key
    $rid = $_SESSION['rid']; // the value

    $data[$x] = $rid; // just assign

    $values = implode("','", array_values($data));
    mysql_query("INSERT INTO appetizer (".implode(",",array_keys($data)).") values ('".$values."')");

    return mysql_insert_id();
}

我强烈建议使用更新的API,MySQLi或PDO。

if(count($data) > 0){
    // key-pair values to be appended
    $x = "rid"; // the key
    $rid = $_SESSION['rid']; // the value

    $data = array_merge(array($x => $rid), $data);

    $keys = array_keys($data);
    $values = array_values($data);

    $sql = 'INSERT INTO appetizer (' . implode(',', $keys) . ') VALUES (' . rtrim(str_repeat('?, ', count($keys)), ', ') . ')';

    $db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
    $insert = $db->prepare($sql);
    $insert->execute($values);

    return $db->lastInsertId();
}

旁注:如果您希望首先使用ID,则可以使用另一种方式:

$data = array_merge(array($x => $rid), $data);