couldn't fetch mysqli error in shoutbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 5 volgende »

Fabian W

Fabian W

18/12/2013 23:10:03
Quote Anchor link
Ik heb een shoutbox van internet gedownload, maar deze geeft een error: Warning: mysqli::query(): Couldn't fetch mysqli in shout.php on line 15
line 15: if($result = $mysqli->query($sql)){
Hoe ontstaat deze error? Ik heb de php code hieronder bijgevoegd, de shoutbox bevat ook nog een index html file, een sql database en een jquery file, maar deze kloppen volgens mij (al heb ik geen verstand van jquery codes)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
  @$mysqli = new mysqli("localhost", "root", "", "shoutbox");
if(isset($_POST['name'],$_POST['msg'])){
  $name = trim($_POST['name']);
  $msg = trim($_POST['msg']);
  if(!empty($name)&&!empty($msg)){
      $sql = "INSERT INTO `shouts` (`id`,`name`,`message`,`post_date`) VALUES(NULL,'".mysql_real_escape_string($name)."','".mysql_real_escape_string($msg)."',NOW())";
      $mysqli->query($sql);
  }
}


if(isset($_GET['show'])){

 $sql = "SELECT `name`,`message`,`post_date` FROM shouts ORDER BY `id` DESC";
 if($result = $mysqli->query($sql)){
 while($row = $result->fetch_assoc()){
    echo "<li><span class='shout_post_name'>".$row['name']."</span>:".$row['message']."</li>";
  }
 }
}


Ik heb dit overigens ongeveer een maand geleden al voorgelegd bij de auteur van deze shoutbox, maar hij reageert niet, dus hoop ik dat iemand hier me kan helpen :)
Gewijzigd op 18/12/2013 23:18:03 door Fabian W
 
PHP hulp

PHP hulp

29/03/2024 02:42:04
 
- Ariën  -
Beheerder

- Ariën -

18/12/2013 23:13:45
Quote Anchor link
Waarom onderdruk je foutmeldingen met een @?
Waarom mysql_real_escape_string() terwijl je mysqli gebruikt?

En kan je een betere titel toepassen op dit topic? Alvast bedankt!
Gewijzigd op 18/12/2013 23:15:04 door - Ariën -
 
Fabian W

Fabian W

18/12/2013 23:24:31
Quote Anchor link
Thanks Aar,
Heb je een suggestie hoe ik '@' kan omzeilen?
dat mysql_real_escape_string()moet idd mysqli zijn, tnx :)
Echter dit is niet de oplossing voor het probleem.
 
- Ariën  -
Beheerder

- Ariën -

18/12/2013 23:39:34
Quote Anchor link
@ weghalen misschien ;-)

En verder goede foutafhandeling toepassen met $mysqli->error.
 
Fabian W

Fabian W

19/12/2013 22:17:22
Quote Anchor link
@Aar haha, ja das wel simpel :)

Ik heb 2 warnings nu
Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /home/u493974131/public_html/shout.php on line 2
Warning: mysqli::query(): Couldn't fetch mysqli in /home/u493974131/public_html/shout.php on line 15

Ik snap sws niet zo goed hoe het nou zit met localhost, root en usernames, wat moet je daar nou voor invullen?
 
Reshad F

Reshad F

19/12/2013 22:41:07
Quote Anchor link
Daar hoort je gebruikernaam, wachtwoord en de host ( localhost in meeste gevallen ) te komen zodat de mysqli driver weet hoe je database te benaderen
 
Kris Peeters

Kris Peeters

20/12/2013 11:34:28
Quote Anchor link
Is dat bij je thuis of op een server?

Server:
Als het op een server is, moet je aan de eigenaars vragen wat de logingegevens van de database zijn.
Dat zijn dus die vier dingen die je moet invullen, hier:
new mysqli("localhost", "root", "", "shoutbox");

Dat kan bv. zijn:
new mysqli("mysql.fabian.nl", "fabian", "", "shoutbox");

------
Thuis:
Standaard, als je xampp installeert (of wamp, lamp, mamp) zijn de gegevens inderdaad
"localhost", "root", ""

Dan maak je een nieuwe database aan met de naam shoutbox.
Dan kloppen de gegevens
 
Fabian W

Fabian W

23/12/2013 14:59:54
Quote Anchor link
thanks, Kris, Reshad.

Ik heb een eigen site (nog lang niet af)
Ik heb voor localhost dit ingevuld: server36.hostinger.nl Dat moet kloppen denk ik.
Alleen wat voor root in te vullen?

Dit?: Tijdelijke FTP Hostnaam
Of Dit?: Volledige FTP Hostnaam (ftp.sitenaam)
Of Dit?: FTP Gebruikersnaam: u493974131
Of gewoon Root?
Of gebruikersnaam (emailadres)
Of server IP?
Of gewoon sitenaam

Ik weet het niet.

De database genaamd shoutbox is al af btw.
 
Kris Peeters

Kris Peeters

23/12/2013 15:11:21
Quote Anchor link
Okay, dat is dus

new mysqli(host, user, password, database);

host, user en password zijn gegevens die je moet ontvangen van de beheerders van je server.

Dus, met de vraag
"Hallo, kunnen jullie me de logingegevens van de database bezorgen, a.u.b.?" zou je die drie gegevens moeten krijgen.

de host is meestal 'localhost', maar kan bv. ook zijn: 'mysql.dreamhost.com'.
Gewoon de drie gegevens invullen die ze je geven
 
Fabian W

Fabian W

29/12/2013 14:36:33
Quote Anchor link
Hi,

Bedankt Kris en alle anderen voor de reacties, het helpt me eigenlijk altijd verder.

Ik heb de database inloggegevens nagevraagd en dat is gelukt, de twee errormeldingen zijn nu ook verdwenen.
Geen errors meer dus, maar toch werkt de shoutbox nog niet.

Als ik een naam en een bericht intyp in de shoutbox en dan op send klik, verdwijnt alleen alles wat ik in heb getypt. Wat er daarnaast nog zou moeten gebeuren is, dat het bericht wat ik net gesumbit heb op het scherm verschijnt en aan de database wordt toegevoegd. Dit gebeurd beide niet. Ook het bericht dat ik handmatig aan de database heb toegevoegd verschijnt niet op het scherm.

Ik zal hieronder nog even het andere php file en de database zetten, misschien dat hier dan toch een fout inzit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
Dit is shoutbox.php:

<!
DOCTYPE HTML>
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
link type="text/css" rel="stylesheet" href="style.css" />
<
script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript" >
$(document).ready(function(){
 $("#shout_button").click(function(){
   var msg = $("#shout_message").val();
   var nam = $("#shout_name").val();
   var value =  $(this).val();
   $(this).val('sending...');
    var datastring = 'name='+nam+'&msg='+msg;
    $.ajax({
    type:'POST',
    url:'shout.php',
    data:datastring,
    cache:false,
    success:function(){
     //$("#shouts ul").prepend("<li><span class='shout_post_name'>"+nam+"</span>:"+msg+"</li>").fadeIn();
     $("#shout_button").val(value);
     $("#shout_message").val('');
     $("#shout_name").val('');
    }
    });  
    
 });

 $("#shouts ul").load("shout.php?show");
  setInterval(function(){
   $("#shouts ul").load("shout.php?show");
 },1000)
 
});
</script>
<title>Chat Box</title>
</head>

<body>
   <div id="shoutbox">
     <div id="shouts">
                 <ul>
                 </ul>
     </div>
     <div id="write">
       <input type="text" id="shout_message" placeholder="Message" name="message"><br/>
       <input type="text" id="shout_name" name="name" placeholder="Name" ><input id="shout_button" type="button" value="Send">
     </div>
   </div>
</body>
</html>


Dit is shoutbox.sql:


-- phpMyAdmin SQL Dump
-- version 3.5.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 29, 2013 at 06:46 AM
-- Server version: 5.5.25a
-- PHP Version: 5.4.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `shoutbox`
--

-- --------------------------------------------------------

--
-- Table structure for table `shouts`
--

CREATE TABLE IF NOT EXISTS `shouts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `message` varchar(255) NOT NULL,
  `post_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `shouts`
--

INSERT INTO `shouts` (`id`, `name`, `message`, `post_date`) VALUES
(1, 'Fabian', 'hello !!', '2013-11-29 10:15:18');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
- Ariën  -
Beheerder

- Ariën -

29/12/2013 15:14:57
Quote Anchor link
Laat eens zien wat shout.php doet...
 
Fabian W

Fabian W

29/12/2013 18:24:27
Quote Anchor link
Dit is shout.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  $mysqli
= new mysqli("lhost", "user", "password", "shoutbox");
if(isset($_POST['name'],$_POST['msg'])){
  $name = trim($_POST['name']);
  $msg = trim($_POST['msg']);
  if(!empty($name)&&!empty($msg)){
      $sql = "INSERT INTO `shouts` (`id`,`name`,`message`,`post_date`) VALUES(NULL,'".mysqli_real_escape_string($name)."','".mysqli_real_escape_string($msg)."',NOW())";
      $mysqli->query($sql);
  }
}


if(isset($_GET['show'])){

 $sql = "SELECT `name`,`message`,`post_date` FROM shouts ORDER BY `id` DESC";
 if($result = $mysqli->query($sql)){
 while($row = $result->fetch_assoc()){
    echo "<li><span class='shout_post_name'>".$row['name']."</span>:".$row['message']."</li>";
  }
 }
}
 
- Ariën  -
Beheerder

- Ariën -

29/12/2013 18:36:09
Quote Anchor link
Voeg foutafhandeling toe aan je query. En bij voorkeur een 'error' event aan je jQuery functie van $.ajax() om bij fouten te tonen wat er fout gaat.
 
Fabian W

Fabian W

29/12/2013 19:23:03
Quote Anchor link
Thanks,

Ik heb alleen geen enkel verstand van jquery, dus zou niet weten hoe dat moet, alles uit het jquery file hier kopieren is ook niet echt een optie gezien de lengte.
Gewijzigd op 29/12/2013 19:30:47 door Fabian W
 
- Ariën  -
Beheerder

- Ariën -

29/12/2013 19:35:58
Quote Anchor link
Kijk eens naar de documentatie van Ajax op de site van jQuery. Maar voeg eerst foutafhandeling toe op je query in PHP.

Je kan shout.php ook voor het simpelste gemak via een formulier aanroepen en kijken welke fout je dan krijgt.
 
Fabian W

Fabian W

29/12/2013 19:40:59
Quote Anchor link
Bedankt voor alle hulp, Aar
maar ik ben bang dat wat je nu zegt mij een beetje boven de pet gaat.
via formulier aanroepen?
 
- Ariën  -
Beheerder

- Ariën -

29/12/2013 19:50:14
Quote Anchor link
Formulier (method="POST") aanmaken in HTML en verwijzen naar shout.php via action="shout.php"
 
Fabian W

Fabian W

04/01/2014 14:16:37
Quote Anchor link
je bedoelt dit? Er gebeurt niks.

form.html:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Naamloos document</title>
</head>
<body>
<form action="shout.php" method="post"></form>
</body>
</html>
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 14:33:03
Quote Anchor link
En waar is de rest van je formulier?
Gewijzigd op 04/01/2014 14:34:07 door - Ariën -
 
Fabian W

Fabian W

04/01/2014 14:41:58
Quote Anchor link
Wat moet de rest zijn van dat formulier? Heb je een linkje voor een tutorial hiervoor op deze site?
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 21:02:55
Quote Anchor link
Input's en een submitknop om de nodige data in te kunnen vullen die je vervolgens naar shout.php wilt versturen?
name en msg zijn de namen van de inputs.
Gewijzigd op 04/01/2014 21:04:51 door - Ariën -
 

Pagina: 1 2 3 4 5 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.