Mysql选择并使用预准备语句插入

时间:2013-02-05 12:40:34

标签: mysql sql select insert

我的mysql查询工作正常

INSERT INTO donor_location (pc_id)
SELECT id
FROM pc
WHERE postcode= ?

即从邮政编码表中获取邮政编码ID,然后将该ID插入到donor_location表中。 我正在使用mysqli和准备好的陈述

没有选择部分会很容易 - 比如

$stmt = $mysqli->prepare("INSERT INTO donor_charity(
id) values (?)") ;

然而,我完全迷失了如何合并选择

3 个答案:

答案 0 :(得分:2)

您所做的几乎相同,只需更改查询位即可 要选择id为25的charity_donor中的所有记录,您可以执行以下查询:

SELECT *
FROM   donor_charity
WHERE  id = 25

现在要查询,首先你必须准备它:

$stmt = $mysqli->prepare("
    SELECT *
    FROM   donor_charity
    WHERE  id = ?
");

现在要遍历结果,必须绑定param,然后执行查询。

$stmt->bind_param('d', 25 ); // First param means the type of the value you're 
                             passing. In this example, d for digit.
$stmt->execute();

然后设置一个数组来保存查询返回的数据

$row = array();
stmt_bind_assoc($stmt, $row);

现在循环返回数据。

while ( $stmt->fetch () ) {
    print_r($row); // Should now contain the column.
}

有关文档,请参阅:
准备:http://www.php.net/manual/en/mysqli.prepare.php
绑定参数:http://www.php.net/manual/en/mysqli-stmt.bind-param.php
执行:http://www.php.net/manual/en/mysqli-stmt.execute.php
抓取:http://www.php.net/manual/en/mysqli-stmt.fetch.php

答案 1 :(得分:0)

答案 2 :(得分:0)

您需要在准备声明后使用Bind_param。

$sql = "INSERT INTO donor_charity(
id) values (?)
       ";
/* create a prepared statement */
if (!$stmt = $db->prepare($sql)) {
    echo 'Database prepare error';
    exit;
}

 /* bind parameters for markers */
$stmt->bind_param('ssssss', $id);

$id = '123456';

 /* execute query */
$stmt->execute();