Permalänk
Medlem

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();
}
}
}

}

Visa signatur

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)

Permalänk
Avstängd

@Lady:

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

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

Visa signatur

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

Permalänk
Medlem

det kommer

@superegg:

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

Visa signatur

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)

Permalänk
Avstängd
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 */

Visa signatur

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

Permalänk
Medlem

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"; }

Permalänk
Medlem

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 ?

Visa signatur

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)

Permalänk
Medlem

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...

Permalänk
Medlem

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 ?>

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
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

Permalänk
Medlem

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

Visa signatur

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)

Permalänk
Medlem

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)