Php 如何确保mysqli prepare语句正确?

Php 如何确保mysqli prepare语句正确?,php,mysqli,prepared-statement,php-5.6,Php,Mysqli,Prepared Statement,Php 5.6,我使用下面的insert函数使用mysqli prepare将值插入到数据库中。但这并没有给我任何错误,也并没有向数据库中插入值。有人能帮我排除故障吗 我可以打印所有这些数组$fields、$placeholder、$values、$format,它们也都显示正确的值 public function insert($table, $data, $format) { global $dbcon; // Check for $table or $data not se

我使用下面的insert函数使用mysqli prepare将值插入到数据库中。但这并没有给我任何错误,也并没有向数据库中插入值。有人能帮我排除故障吗

我可以打印所有这些数组
$fields、$placeholder、$values、$format
,它们也都显示正确的值

    public function insert($table, $data, $format) {
            global $dbcon;
// Check for $table or $data not set
            if (empty($table) || empty($data)) {
                return false;
            }

// Cast $data and $format to arrays
            $data = (array) $data;
            $format = (array) $format;

// Build format string
            $format = implode('', $format);
            $format = str_replace('%', '', $format);

            list( $fields, $placeholders, $values ) = $this->prep_query($data);

// Prepend $format onto $values
// array_unshift($values, $format);

// Prepary our query for binding
            $stmt = $dbcon->prepare("INSERT INTO {$table} ({$fields}) VALUES ({$placeholders})");

            if (false === $stmt) {
                die('prepare() failed: ' . htmlspecialchars($mysqli->error));
            }

// Dynamically bind values
            $bp = call_user_func_array(array($stmt, "bind_param"), array_merge($format, $values));
//            $bp = call_user_func_array(array($stmt, 'bind_param'), $this->ref_values($values));
            if (false === $bp) {
                die('bind_param() failed: ' . htmlspecialchars($stmt->error));
            }
// Execute the query
            $result = $stmt->execute();
            if (false === $result) {
                die('execute() failed: ' . htmlspecialchars($stmt->error));
            }
// Check for successful insertion
            $Insertid = $stmt->insert_id;
            return $Insertid;

//            if ($stmt->affected_rows) {
//                return true;
//            } 
//
//            return false;
        }

更改
$bp=call_user_func_数组(array($stmt,“bind_param”)、array_merge($format,$values))语句到
$bp=$stmt->bind_param($format,…$values)

它是否返回非零值?请参阅,如果您想执行类似这样的动态查询构建操作,我建议您转到PDO。必须使用
call\u user\u func\u array()。使用PDO,您可以绑定单个参数和/或使用values@Nick它没有返回任何内容。您是否逐行跟踪代码?您是否检查了mysqli的
$error
属性中是否存在任何错误?您是否启用了错误报告并查看了PHP日志?我想你最好在我们站在你这边之前做这些。除非你给我们一些线索,否则我们不会有任何线索。