PHP-插入要内爆的变量数据


PHP - Insert variable data to implode

这对你们中的一些人来说可能是非常基本的,但我似乎真的搞不明白@。@

我想将$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

如果您想推送这些值并使其成为密钥对值,而不介意任何顺序,请相应地推送赋值。

在值为数组时推送该值,然后内爆。不需要对内爆的字符串进行更改。

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