ScriptBasic

Support => General Discussions => Topic started by: alej on January 05, 2009, 03:53:46 PM

Title: CGI -> MySQL
Post by: alej on January 05, 2009, 03:53:46 PM
Hi,

how can I write data with the cgi modul to MySQL using forms... There is only
a sample how to read data with the cgi modul... (http://www.scriptbasic.org/cgi-bin/mysql_tutorial.bas)...

Thank you in advance
JK
Title: Re: CGI -> MySQL
Post by: Support on January 05, 2009, 08:44:26 PM
JK,

Welcome to the ScriptBasic forum.

Here is an example of using the MySQL extension module in a CGI environment.

http://www.scriptbasic.org/forum/index.php/topic,3.0.html

To "write" to a SQL database you have to use the INSERT or UPDATE SQL statements.

Let us know how it works out for you.

John
Title: Re: CGI -> MySQL
Post by: alej on January 09, 2009, 03:26:51 PM
Hi,

i played a little bit with cgi and mysql and tried the following...

Code: [Select]
#! /usr/bin/scriba -c

include cgi.bas
include mysql.bas

dbh = mysql::RealConnect("localhost","root","mypassword","sbtestdb")

cgi::Header 200,"text/html"
cgi::FinishHeader

if cgi::RequestMethod() = "POST" then
SQL = "INSERT INTO contact (NAME) VALUES (" & TEXT-FIELD")"
end if

print """<head>
</head>
<title>mysql test</test>
<body>
<table><tr><td border=0 bgcolor="eeeee">
<form method="POST" ACTION="index.bas">
<input type ="TEXT" VALUE="TEST" NAME="TEXT-FIELD">
<input type ="SUBMIT" NAME="SUBMIT-BUTTON" VALUE="POST">
</form>
</td>
</body>
</html>


but this does not seem to work...  ??? Any hint
Title: Re: CGI -> MySQL
Post by: Support on January 09, 2009, 05:15:41 PM
Hint:


mysql::query(dbh, SQL)

In your example you assign the variable SQL with the statement but that's it.

Now MySQL needs to process it with the query() function.

Nothing to fetch() as your not requesting a return of any data.

If the row already exists and has a unique 'key' (index) then you would get an error on the INSERT and would have to use a UPDATE instead.

You have an error in your SQL string as well.

Code: [Select]

SQL = "INSERT INTO contact (NAME) VALUES (" & TEXT-FIELD")"

should be:

SQL = "INSERT INTO contact (NAME) VALUES ('" & cgi::PostParam("TEXT-FIELD") & "')"


John
Title: Re: CGI -> MySQL
Post by: alej on January 13, 2009, 05:50:21 AM
Hi John,

thank you for the hint, when i try to run the script (apache 2.2.9) I get an error

Premature end of script headers: index.bas

Error 500

 ??? ??? ???
Title: Re: CGI -> MySQL
Post by: Support on January 13, 2009, 07:04:41 AM
I would first see if the echo.bas program runs from the cgi-bin correctly.

I would then create a console mode test program to make sure MySQL is working for you. (without CGI / HTML code)

scriba -d your_pgm.bas  will show you debug output for the extension module loading and tell you if it failed or not.

If everything looks good at this point and your still having problems running your script, repost your code so I can have a peek.

If your running under Windows, don't forget to change the first line.

# ! C:/scriptbasic/bin/scriba -c