Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

php mysqli bind_param

Har kollat på php sidan. under exempel 1 objekt orienterad
http://php.net/manual/en/mysqli-stmt.bind-param.php
Just nu fattar jag inte riktigt varför den inte lägger till i databasen från inmatningsfälten ?

<div id="regform3">
<form action="" method="post" >
Produkt namn: <input type="text" name="produkt_namn" id="produkt_namn">
<br />
Produkt pris: <input name="produkt_pris" id="produkt_pris">
<br /> <br>
<input type="submit" name="insert">
</form>
</div>

<?php
// Hanterar inmatning från form

// Kollar så att inmatningsfältet inte är tomt
if(!empty($_Post['insert']))
{

if(isset($_Post['produkt_namn'],$_Post['produkt_pris']))
{
// Skapar variabel som pekar på inmatning samt trimmar tomma rader
$produkt_namn = trim($_Post['produkt_namn']);
$produkt_pris = trim($_Post['produkt_pris']);

//Om inte fälten är tomma lägg in i databasen
if(!empty($produkt_namn) && !empty($produkt_pris))
{
// förbereder en statement
$insert = $db->prepare("INSERT INTO product (product_title,product_price) Values (?,?)" );

$insert->bind_param('ss',$produkt_namn,$produkt_pris);

if($insert->execute())
{
header('Location: test.php');
die();
}
}
}

}

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jul 2016

@Lady:

Varför inte lägga den i en egen php fil?

<form action="loginprocess.php" method="post" >

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

det kommer

@superegg:

Det kommer sen.
Just nu försöker jag förstå mysql i .

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jul 2016
Skrivet av Lady:

// förbereder en statement
$insert = $db->prepare("INSERT INTO product (product_title,product_price) Values (?,?)" );

Din SQL syntax funkar inte dock kör jag nyas version på MYSQL.

Om du gör med en äldre MYSQL så kanske det funkar.

/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"INSERT INTO ghdfsdf_client (firstname,lastname) Values (robin,ros)"' at line 1 */

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Maj 2004

Jag hämtar lite tips från din föregående tråd, som kan vara bra att ha med sig.

1. Använd gärna code-taggarna, så blir det lättare att läsa din kod här i forumet
2. VAR är det du kör fast? Du säger att du inte kan lägga till saker från inmatningsfält, men inte var du fastnar?
3. Har du använt dig av tipsen du fick i förra tråden vad gäller print_r/echo/var_dump på dina variabler så du har förväntat innehåll med dig hela vägen?

Gör du 3 ovan så märker du snart att du inte ens tar dig in i första if-satsen, och ingen av din kod som hanterar något från ditt formulär eller databaskopplingar exekveras någonsin.

Jag kortade ner din kod till att bara använda sig av ovan nämnda if-sats (+ formuläret) samt la ut en echo, kör den och se vad som händer:

<div id="regform3"> <form action="" method="post" > Produkt namn: <input type="text" name="produkt_namn" id="produkt_namn"> <br /> Produkt pris: <input name="produkt_pris" id="produkt_pris"> <br /> <br> <input type="submit" name="insert"> </form> </div> <?php // Hanterar inmatning från form // Kollar så att inmatningsfältet inte är tomt if(!empty($_Post['insert'])) { echo "Det funkar, jag kommer in i första if-satsen"; }

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

Seg som man är så glömde med köra echo för att kolla vart felet ligger i .
Men som jag testade så går den förbi första if men stannar någonstans på den andra.
Eller rättare sagt den verkar inte köra den andra if av någon anledning ?

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Maj 2004

Du kör alltså min kodsnutt ovan och får fram utskriften "Det funkar, jag kommer in i första if-satsen"?
Intressant, för det får inte jag, jag ser nämligen ett rätt så stort fel i just den if-satsen...

Trädvy Permalänk
Medlem
Registrerad
Sep 2009

Exempel från egen php
(Lagt till lite mer kommentarer nu där av svenlskan).
Anslutning till servern:

$serverIp = "AdressTillDatabasen"; //Change if needed. $DBname="dataBasNamn"; //this is the name in the sql script //tror det är rekommenderat att läsa in användarnamn och lössen från en fil. $username="xxx"; //MySQL username. $passsword="xxx"; //MySQL password.. //make con a global variable. $con = null; //try to connect to database. try{ $con = new PDO("mysql:host=$serverIp;dbname=$DBname;", $username, $passsword); }catch(PDOException $e){ echo $e->getMessage(); }

SQL Queary exemple (få ut data ur databasen):

//Query $sql = "SELECT * FROM textForPost WHERE EXTRACT(YEAR_MONTH FROM postDate) = EXTRACT(YEAR_MONTH FROM CURDATE()) ORDER BY id DESC"; //Förbereder uttrycket (för att förhindra sql-injection bl.a). $stm = $con->prepare($sql); //genomför query $stm->execute(); //Spara resultatet i php variable $res = $stm->fetchAll(); //Skriver ut resultatet om det fanns något. //This is a worse solution then it would be with a left join! (sql). if($res != false){ foreach ($res as $row) { echo $row['postText']; } }

SQL Query exempel (sätta in data i databasen.):

//SQL frågan, första () databas tabel attribut och den andra () är namn för dessa attribut i koden. $sql = "INSERT INTO textForPost (postDate, postText) VALUES (:dateItWas, :thePostText)"; //förbereder frågan. $stm = $con->prepare($sql); //utför inmatning till databasen $res = $stm->execute(array( //efter => är php variabeln jag vill till dela attributen enligt sql frågan. (VIKTIGT med dubbel snufftecken för att förhindra SQL-injection) ":dateItWas" => $currentDate, ":thePostText" => $tmp2 ));

Vill du göra detta inline så kör php taggar runt:

<?php PHPKodenHär ?>

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

@thulin82:
Ok sanning med mod, tar jag bort ! så ser jag att den körs.

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Maj 2004

Nu spelar du bara kodbingo igen, och vet inte varför du gör saker. Helt riktigt, plockar du bort ! så körs första kodsnutten eftersom du nu kontrollerar ifall

$_Post['insert']

är tom, vilken den ALLTID är... (och det är där ditt fel ligger)