my INSERT query not working - mysql

i dont know why but these values are not going into my database.these is my code.
<?php
define('INCLUDE_CHECK',true);
require '../database/connect.php';
session_name('user');
session_set_cookie_params(2*7*24*60*60);
session_start();
if(isset($_POST['submit']) && $_POST['submit']=='Submit')
{
$stdID='CC13051';
$itemCODE='00';
$pckgeID='1';
$condition='qwe';
$duration='5';
$status='Not Approved';
mysqli_query($link," INSERT INTO storage_details(stdID,itemCODE,pckgeID,cndition,duration,status)
VALUES(
'$stdID',
'$itemCODE',
'$pckgeID',
'$condition',
'$duration',
'$status',
)");
if (mysql_errno()) {
die('Invalid query: ' . mysql_error());
}
}
?>
mysql_err didnt give out anything.or am i using it in the wrong way?

mysqli_query($link," INSERT INTO storage_details(stdID,itemCODE,pckgeID,cndition,duration,status)
VALUES(".$stdID.",".$itemCODE
You are including you PHP variables in SQL as strings, change to include as PHP variables and concatenate them into SQL using .

Seems like you are not connecting to database.
<?php
mysql_connect("localhost","root","");
mysql_select_db("dbName");
?>

Try to replace
if(isset($_POST['submit']) && $_POST['submit']=='Submit')
By
if(isset($_POST['submit']))

i forgot to remove the comma after $status. thanks to #Tobias Baumeister for pointing it out.
mysqli_query($link," INSERT INTO storage_details(stdID,itemCODE,pckgeID,cndition,duration,status)
VALUES(
'$stdID',
'$itemCODE',
'$pckgeID',
'$condition',
'$duration',
'$status', <-- this comma should not be here
)");

Related

Cannot push data to mysql

I can't seem to push data from my form to the database, I have checked the error_log and there's no error. Please check my codes below, thank you!
<?php
$con=mysqli_connect("localhost","admineventus","J7!ren;3") or Die ("Cannot connect");
mysqli_select_db($con,"eventus");
if(isset($_POST['submitpublish']))
{
mysqli_query($con,"insert into events values('$_POST[Category]','$_POST[Name]','$_POST[Location]','$_POST[Sdate]','$_POST[Edate]','$_POST[Etime]','$_POST[Fee]','$_POST[Free]','$_POST[About]')");
}
?>
Try this
if(isset($_POST['submitpublish']))
{
$sql = "INSERT INTO events (col1, col1, .. , colx)
VALUES ('".$_POST["Category"]."','".$_POST["Name"]."','".$_POST["Location"]."','".$_POST["Sdate"]."','".$_POST["Sdate"]."','".$_POST["Edate"]."','".$_POST["Etime"]."','".$_POST["Fee"]."','".$_POST["Free"]."','".$_POST["About"]."')";
$result = mysqli_query($conn,$sql);
}
Make sure your code enters in IF statement

printing mysql data using php

I can't seem to print the data form mysql using the following code.
Am I missing something?
<?php
mysql_connect("localhost","user","pass");
mysql_select_db("myDB");
$res=mysql_query("select * from myTABLE");
while($row=mysql_fetch_array($res))
{
echo "$row[id]";
?>
Check the PHP Manual on echo,
This part shows you how to print arrays:
// You can also use arrays
$baz = array("value" => "foo");
echo "this is {$baz['value']} !"; // this is foo !
You are missing closing curly bracket. And put id into quotation marks:
<?php
mysql_connect("localhost","user","pass");
mysql_select_db("myDB");
$res=mysql_query("select * from myTABLE");
while($row=mysql_fetch_array($res))
{
echo $row['id'];
}
?>
I recommend using mysqli. mysql extension is deprecated.
Appreciate your responses. I am able to make it work now.
I am trying to make the code more specific and secure.
I tried joining two tables, using this and it won't print the id from main (m.id) and category_name on c.category_name table.
$res = mysqli_query("SELECT m.id, c.category_name FROM `main` AS m INNER JOIN `categories` AS c ON m.category_id=c.id");
The code below works
$res = mysql_query("SELECT * from main");
Regarding connecting to the db via a separate file. This doesn't work. And no errors are being display on the php even after adding error_reporting.
require_once('../../../hide/dbconn.php');
instead of using below
mysql_connect("localhost","user","pass");
mysql_select_db("myDB");

INSERT INTO MYSQL - Can´t insert data

After a couple of week´s trying to insert data in variables from form in MYSQL database, i´m asking here. I found a lot of example codes of INSERT INTO and also my provider checked my skript. He said I have a problem in my $sql=.
I tryed a lot of, but i can´t see any data in phpMyAdmin after click submit, but i receive the mail, that works fine.
Maybe anybody can see an issue in my script.
<?php
if(isset($_POST["sendcopy"])){
mail($mailToCC, $subject, $textCC, $from);
}
if(isset($_POST["submit"])){
$host_name = "database.myprovider";
$database = "db_name";
$user_name = "user_name";
$password = "*****************";
$connect = mysqli_connect($host_name, $user_name, $password, $database);
if (mysqli_connect_errno())
{
echo "KEINE VERBINDUNG MÖGLICH! " . mysqli_connect_error();
}
else
{
echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}
$sql= 'INSERT INTO "offen"("id", "vorname", "nachname", "email", "telefon", "geburtsjahr", "postleitzahl", "datum", "stunde", "minute", "personen", "bereich", "nachricht")
VALUES ($id, $vorname, $nachname, $email, $tel, $geburtsjahr, $plz, $datum, $stunde, $minute, $personen, $bereich, $nachricht)';
mysql_close($connect);
}
include ("reservtrue.php");
exit;
?>
The "submit" comes from a <form> below.
<form method="post" action="mailer.php" onsubmit="return chkFormular()" name="Formular" id="formTemplate">
<table id="reservtable">
.
.
.
.
<input type="submit" name="submit" value="Reservieren" id="submit">
</td>
</tr>
</table>
</form>
I hope it´s no problem to use german words as variables, here in stackoverflow.
Thank´s for help.
EDIT
Thank you for you´r suggestions. I still can´t insert data from form to MYSQL. I changed my Code a bit. And if I paste the code into phpMyAdmin - SQL, it work´s! But not if I load my script to server and test my form in web.
This is my new Code:
<?php
error_reporting(E_ALL ^ E_NOTICE);
if(isset($_POST["submit"])){
$vorname = $_POST["Vorname"];
$nachname = $_POST["Nachname"];
$email = $_POST["Mailadresse"];
$tel = $_POST["Telefonnummer"];
$geburtsjahr = $_POST["Geburtsjahr"];
$plz = $_POST["PLZ"];
$datum = $_POST["Datum"];
$stunde = $_POST["Stunde"];
$minute = $_POST["Minute"];
$personen = $_POST["Personen"];
$bereich = $_POST["Bereich"];
$nachricht = $_POST["Nachricht"];
$host_name = "database.myprovider";
$database = "db_name";
$user_name = "user_name";
$password = "*****************";
$connect = mysqli_connect($host_name, $user_name, $password, $database);
if (mysqli_connect_errno())
{
echo "KEINE VERBINDUNG MÖGLICH! " . mysqli_connect_error();
}
else
{
echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}
$insert = ("INSERT INTO offen(vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht)
VALUES ('".$id."', '".$vorname."', '".$nachname."', '".$email."', '".$tel."', '".$geburtsjahr."', '".$plz."', '".$datum."', '".$stunde."', '".$minute."', '".$personen."', '".$bereich2."', '".$nachricht."')");
mysqli_query($insert, $sql);
}
include ("reservtrue.php");
exit;
?>
Problem solved
Problem is solved with following code:
$insert = "INSERT INTO `offene`
(
`id`, `vorname`, `nachname`, `email`, `telefon`, `geburtsjahr`, `postleitzahl`, `datum`, `stunde`, `minute`, `personen`, `bereich`, `nachricht`
)
VALUES
(
NULL, '$vorname', '$nachname', '$email', '$tel', '$geburtsjahr', '$plz', '$datum', '$stunde', '$minute', '$personen', '$bereich', '$nachricht');";
mysqli_query($connect, $insert);
Thank you guy´s for information, inspriation and tips! I learnd a lot in the last 2 days.
Where is your mysql_query($sql); ? Add this after your $sql. Your $sql query require mysql_query to run it. If you added that and it still doesn't work, I suggest your go to phpmyadmin's sql tab. Paste your query in with some random VALUES. That's how I check if my query is working or not.
echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}
$sql= 'INSERT INTO offen (id, vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht)
VALUES ('$id', '$vorname', '$nachname', '$email', '$tel', '$geburtsjahr', '$plz', '$datum', '$stunde', '$minute', '$personen', '$bereich', '$nachricht')';
mysqli_query($connect,$sql); //this line was missing from your code.
mysqli_close($connect); //updated to make it MySQLi
The mysqli_query($connect,$sql) actually does the work of applying the SQL you define in the $sql query.
NOTE
You have both MySQLi and MySQL functions in your script, you must stick with just one function, ALL your SQL functions must be MySQL i .
I would recommend that you change your SQL query to use single quotes and backticks. The table name offen and the column names do not need to be in quotes. The variables you insert do need to be in quotes, as I have illustrated.
You do not (usually) need to have mysqli_close because the SQL connection automatically closes once the PHP reaches the end of the page.
The variable names don't need quotes but the parametes do. Also you are missing the code to execute the SQL statement.
echo "ERFOLGREICHE VERBINDUNG ZUR DATENBANK!";}
$sql= "INSERT INTO offen(id, vorname, nachname, email, telefon, geburtsjahr, postleitzahl, datum, stunde, minute, personen, bereich, nachricht)
VALUES ($id, '$vorname', '$nachname', '$email', '$tel', '$geburtsjahr', '$plz', '$datum', '$stunde', '$minute', '$personen', '$bereich', '$nachricht')";
if ($connect->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $connect->error;
}
mysql_close($connect);
}
It appears you have some understandable confusion about quoting of the variables in $insert. You likely have a problem with how you are handling your datatypes.
Here are a few things to look out for
You have too many quotes around your variables. Wrap the query in "" but save the '' for individual variables (where necessary, seen below). For instance, just wrap the variable once like so: .'$vorname'.' if the variable you are inputting is a string. If it is an integer (INT variable type), leave the quotes off, e.g.$number`. In other words, input strings as strings, and INT as int.
If the variable you wish to input is set as auto-increment in your database (i.e. it is the primary key), you probably don't want to be inputting it at all. For example, in your case $id appears to be one. If this is true, you have the syntax backward. Just input it as NULL or leave it off the insert, like so: insert into tablename (id, vorname) values (NULL, '$vorname')
You need to also sanitize your ALL of your variables if you to prevent SQL Injection (very possible with your code). You can do this with mysqli_real_escape_string()
OR instead of going through all of that, you could use prepared statements, which would both handle that information in a cleaner way, but also would protect your code against SQL injection.
Here's how to do this using mysqli:
Connect as an object:
$connect = new mysqli($host_name, $user_name, $password, $database);
And then feed your query into the object and bind the parameters. In this section, "s" is a string, "i" is an integer.
$insert = $connect->prepare("INSERT INTO offen(id, vorname, nachname, email)
VALUES (NULL, ?,?,?");
$insert->bind_param("sss", $vorname, $nachname, $email);
$insert->execute();
$insert->close();
If you name your variables correctly, this should work.

Adding data to MySQL won't work

Can't figure out what I'm doing wrong here:
<?php
include "dbopen.php";
$fnamn = $_POST["fnamn"];
$enamn = $_POST["enamn"];
$email = $_POST["email"];
mysqli_query($dbconnect,"INSERT INTO personer (Fornamn, Efternamn, Email) VALUES ($fnamn, $enamn, $email)");
?>
The include tag works fine, since I can create data in phpmyadmin and get it to write out the data, but adding won't work. Ain't getting any errormessages either...
Thanks in advance!
Put quotes around these string values like
VALUES ('$fnamn', '$enamn', '$email')
And at the very minimum, run your POST values through mysqli_real_escape_string
<?php
include "dbopen.php";
$fnamn = mysqli_real_escape_string($dbconnect, $_POST["fnamn"]);
$enamn = mysqli_real_escape_string($dbconnect, $_POST["enamn"]);
$email = mysqli_real_escape_string($dbconnect, $_POST["email"]);
$sql = "INSERT INTO `personer` (`Fornamn`, `Efternamn`, `Email`) VALUES ('".$fnamn."', '".$enamn."', '".$email."');";
if (mysqli_query($dbconnect, $sql) === true) {
printf('Success');
} else {
print_f(mysqli_error($dbconnect));
}
?>

writing xml into mysql in for each loop

I have pulled values from an xml file which i need to store. I now need to get this data into my mysql database. I have done a complex for each loop with multiple levels so I am wondering how I would go about putting this in to a MYSQL insert statement. Any help would be gratefully appreciated.
Example
<?php
$source = file_get_contents("test.xml");
$xml = simplexml_load_string($source);
$game = $xml->xpath("//market");
foreach ($game as $event)
{
if (strpos($event['name'], 'Match Betting') !== false)
{
mysql_query("INSERT INTO feed (feedid, homeid, homeodd, drawid, drawodd, awayid, awayodd)
VALUES ("echo $event['id'] .", ";
{
foreach ($event->children() as $prices)
{
echo $prices['id'] . ", ";
echo $prices['odds'];
}
}
")");
}
}
?>
The above really doesnt work and is a little stupid but I really cant think how to do this.
Help please :D
dont use foreach loop inside the mysql statement. instead use the sql in the foreach loop. try it and inform if it doesn't work.