Yanlış dönersek, ama - Neden Mysqli Bildirimi hazırlayın?

1 Cevap php

Ben sütun adları ve sütun ve bir tablo adı (basit bir dize) sokulacak değerleri bir ilişkisel dizi dayalı hazırlanmış bir INSERT deyimi üreten bir işlevi vardır:

function insert ($param, $table) {
        $sqlString = "INSERT INTO $table (".implode(', ',array_keys($param)).') VALUES ('.str_repeat('?, ', (count($param) - 1)).'?)';
        if ($statement = $this->conn->prepare($sqlString)):
        	$parameters = array_merge(array($this->bindParams($param), $param));
			call_user_func_array(array($statement, 'bind_param', $parameters));
        	if (!$statement->execute()):
        		die('Error! '.$statement->error());
        	endif;
        	$statement->close();
        	return true;
        else:
        	die("Could Not Run Statement");
        endif;
    }

Benim sorunum $ this-> bağl-> false döndürür (hiçbir sorunları ile çalışır YENİ mysqli nesnesi, bir sınıf, bağl parçası), ama bana bir neden vermez hazırlamak olduğunu!

İşte hazırlamak deyimi için inşa alır örnek $ SQLString olduğunu:

INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

Herkes bu parametreli deyimi ile bir sorun görüyor musunuz? Işlevini hazırlamak herhangi bir nedenle yanlış dönecekti?

1 Cevap

Bu aksi soru sonsuza kadar "cevapsız sorular" görünecektir, bir upvote verilebilir yüzden ben bu yanıt içine çözümünü taklit ediyorum. Ben herhangi bir puan almazsınız yüzden ben bu cevabı CW işaretleme ediyorum.

@ Andrew E. diyor ki:

I just turned on mysqli_report(MYSQLI_REPORT_ALL) to get a better understanding of what was going on - turns out that one of my field names was incorrect - you'd think that prepare() would throw an exception, but it fails silently.