() mysql_fetch_array parametre 1 kaynak (veya mysqli_result), boolean given bekliyor
MySQL tablodan veri seçmek için çalışıyorum, ama aşağıdaki hata iletilerinden birini alıyorum:
() mysql_fetch_array parametre 1 kaynak olması için, verilen boolean olmasını bekliyor
ya
() mysqli_fetch_array bekliyor mysqli_result, boolean verilen parametre 1
Bu benim kod:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
CEVAP
Bir sorgu bu durumda mysql_* mysqli uzantısı her iki yöntem/ilgili sorgu fonksiyonları false
döner çeşitli nedenlerden dolayı başarısız olabilir. Bu hata için koşul sınamak ve ona göre ele almak gerekir.
NOT15 ** ve yaklaşan php Sürümü 7 ile kaldırılacaktır.
mysql_fetch_array
geçirmeden önce $result
kontrol edin. Sorgu başarısız olduğundan false
olduğunu göreceksiniz. Onlarla nasıl başa Olası dönüş değerleri ve önerileriniz için mysql_query
belgelerine bakın.
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '$username'");
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
mysqli extension
usul tarzı:
$username = mysqli_real_escape_string($mysqli, $_POST['username']);
$result = mysqli_query($mysqli, "SELECT * FROM Users WHERE UserName LIKE '$username'");
// mysqli_query returns false if something went wrong with the query
if($result === FALSE) {
yourErrorHandler(mysqli_error($mysqli));
}
else {
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
oo tarzı:
$username = $mysqli->escape_string($_POST['username']);
$result = $mysqli->query("SELECT * FROM Users WHERE UserName LIKE '$username'");
if($result === FALSE) {
yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else {
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
hazırlanmış deyimi kullanarak:
$stmt = $mysqli->prepare('SELECT * FROM Users WHERE UserName LIKE ?');
if ( !$stmt ) {
yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else if ( !$stmt->bind_param('s', $_POST['username']) ) {
yourErrorHandler($stmt->error); // or $stmt->error_list
}
else if ( !$stmt->execute() ) {
yourErrorHandler($stmt->error); // or $stmt->error_list
}
else {
$result = $stmt->get_result();
// as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
foreach( $result as $row ) {
...
Bunlar sadece örnekler göstermeknenasıl yapıldığını (hata işleme) yapılmalıdır. Üretim kodu HTML çıktısı or die
kullanmamalısın, başka (en azından) geçersiz HTML oluşturur. Ayrıca, veritabanı hata iletileri 19 **-admin olmayan kullanıcılar için görüntülenen olmamalı.
ORA-00054: kaynak meşgul ve aşağıdaki ...
Herhangi bir kaynak için belirtilen kü...
eklemek veya sorgu dizesi parametre gü...
Kaynak bulunamadı, ancak bazı veya tüm...
Hangisi daha iyi, değer veya parametre...