Sorun mysql veritabanı php mysqli'nin tasarrufu

1 Cevap php

Hi all i'm trying to save data to database and i get an error i never saw before i have a hunch it has something to do with the db collation but I'm not sure whats wrong,

Burada sorgu:

$query1 = "INSERT INTO scape.url (url,normalizedurl,service,idinservice) VALUES (url, normalizedurl, 4, 45454)";
            $query = "INSERT INTO scape.url (url, normalizedurl, service, idinservice) VALUES ("
            .$sql->real_escape_string($this->url).","
            .$sql->real_escape_string($this->normalizedUrl).","
            .$sql->real_escape_string($this->service).","
            .$sql->real_escape_string($this->idInService).")";
            $result = $sql->query($query);
            echo $sql->error;

i olsun hata masajı:

Eğer SQL sözdizimi bir hata var; line 1 yakınlarındaki ':/ / www.something/here/here/here/12345, httpwwwsomthighere' kullanmak doğru sözdizimi için MySQL sunucu sürümü karşılık kılavuzunu kontrol

Bu alanlar için veritabanı harmanlama utf8-general-ci ve alan tipi varchar 255

bu konuda herhangi bir fikir?

1 Cevap

Eğer bu şekilde yaparsanız, yine dizeleri (url ve normalizedurl) tırnak koymak zorunda. Bu sözdizimi sorun onun atıfta bulunuyor.

Üzücü olan, bu mysqli'nin ile parametreleri geçen önerilen yol değil. Mysqli'nin bütün mesele bu sorgu parametrelendirmesini olmasıdır. Örneğin:

$mysqli = new mysqli($host, $user, $password, $database);
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit;
}
$sql = <<<END
INSERT INTO scape.url (url,normalizedurl,service,idinservice)
VALUES (?, ?, ?, ?)
END;
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
  printf("Error executing %s: %s\n", $sql, $stmt->error);
  exit;
}
$stmt->bind_param('ssii', $this->url, $this->normalizedUrl,
  $this->service, $this->idInService);
$stmt->execute();