查询未执行

时间:2013-06-25 11:21:52

标签: php mysqli

有些人可以解释一下这有什么问题......这对于程序性的php来说完全没问题

function foo(){
    $incomingtime = date('Y-m-d H:i:s', time());
    $stmt = $db->stmt_init();
    $id = "Abc123" ;
    $u_id = 1;
    $c_id = 1;
    $query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
              VALUES (?, ?, ?, ?)";
    $stmt = $db->prepare($query);
    $stmt->bind_param('ssii', $incomingtime, $id, $u_id, $c_id);

    $stmt->execute();
    printf("Affected rows (UPDATE): %d\n", $db->affected_rows);   // Always return 1
    $stmt->close();
}

但数据库中没有任何内容。

mysql db for indate中的数据类型为datetime

2 个答案:

答案 0 :(得分:3)

此代码存在多个问题。

  1. $stmt_4在定义之前使用。
  2. $u_id$c_id都已定义,但未使用。
  3. 尝试在不提供参数的情况下执行$stmt
  4. $db未定义。
  5. $id未定义。
  6. 如果您尝试将工作代码转换为函数,请确保函数将这些函数作为参数传入,将它们标记为全局或函数创建/检索它们。

答案 1 :(得分:0)

检查更改:

$query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
          VALUES (?, ?, ?, ?)";
$stmt = $db->prepare($query);
$stmt->bind_param('ssii', $incomingtime, $id, $u_id, $c_id);
$u_id = 1;
$c_id = 1;
$stmt->execute();

为:

$u_id = 1;
$c_id = 1;

$query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
          VALUES (CURRENT_TIMESTAMP, ?, ?, ?)"
$stmt = $db->prepare($query);
$stmt->execute(array($id, $u_id, $c_id));

注意:我删除了参数ssii,因为在查询中没有考虑它。它只需要4个参数。