Tilted Forum Project Discussion Community

Tilted Forum Project Discussion Community (https://thetfp.com/tfp/)
-   Tilted Technology (https://thetfp.com/tfp/tilted-technology/)
-   -   [PHP/MySQL] Query problem (https://thetfp.com/tfp/tilted-technology/51051-php-mysql-query-problem.html)

Fallon 04-01-2004 06:01 PM

[PHP/MySQL] Query problem
 
Alright, so I got MySQL v. 4.0.18-standard, and php 4.3.4 as background.
What I'm tryin to do is create a script that'll create a table thru a table. Some people may have the PHP fast & easy development and I'm trying to copy the one that they have in the book.
I've looked at the php.net, and it didn't really answer my question though.
Here's the error I get.
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 't (Array[0]),)' at line 1
This is in the table creation script
PHP Code:

$sql "CREATE TABLE $_POST[table_name] (";
for (
$i 0$i count($_POST[field_name]); $i++) {
    
$sql .= "$_POST[field_name][$i$_POST[field_type][$i]";
    if (
$_POST[field_length][$i] != "") {
    
$sql .= " ($_POST[field_length][$i]), ";
    } else {
        
$sql .= ", ";
    }


and heres my form sorta deal. It used to have a dropdown menu, but I thought that may be part of the issue, but it isn't I think.
This is in the table selection field.
PHP Code:

  for($i 0$i $_POST[num_fields]; $i++) {
      
$form_block .= "
      <TR>
          <TD ALIGN=CENTER><INPUT TYPE=\"text\" NAME=\"field_name[]\" SIZE=\"30\"></TD>
          <TD ALIGN=CENTER><INPUT TYPE=\"text\" NAME=\"field_type[]\">            </TD>
          <TD ALIGN=CENTER><INPUT TYPE=\"text\" NAME=\"field_length[]\" SIZE=\"5\"></TD> 

If you need to see anymore code or got any questions, I'll try my best to answer them.
If you have any references about this that I can look at, I would be greatly appriciative.

Moskie 04-01-2004 08:46 PM

I think the problem is that the last time this for loop goes through:

PHP Code:

$sql "CREATE TABLE $_POST[table_name] (";

for (
$i 0$i count($_POST[field_name]); $i++) {

    
$sql .= "$_POST[field_name][$i$_POST[field_type][$i]";

    if (
$_POST[field_length][$i] != "") {

    
$sql .= " ($_POST[field_length][$i]), ";

    } else {

        
$sql .= ", ";

    }



... you're left with an extra comma at the end.

Do a check to see if you're at the last iteration of the loop. If you are, don't print the comma. Hopefully that helps.

Such as:

PHP Code:

$sql "CREATE TABLE $_POST[table_name] (";

for (
$i 0$i count($_POST[field_name]); $i++) {

    
$sql .= "$_POST[field_name][$i$_POST[field_type][$i]";

    if (
$_POST[field_length][$i] != "") {

    
$sql .= " ($_POST[field_length][$i]) ";

    } 

if (
$i $_POST[field_name]-1) {
    
$sql .= ", ";
}




Rawb 04-01-2004 09:41 PM

A common, but small mistake
 
This happens all the time.

when your loop goes through, it will end up with an extra comma on the end, remove it with rtrim() after your loop is finished
PHP Code:

$sql rtrim($sql,", "); 

Also, after that is all done, you have open a paranthesis(sp) but not closed it, look right after the CREATE TABLE, so just append a close paranthesis to the end and you should be pretty well good to go.

mpedrummer2 04-03-2004 11:19 AM

I generally toss stuff like that into a temporary array, then implode() the array, gluing with commas.

No trailing commas that way.

MPEDrummer


All times are GMT -8. The time now is 01:39 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project


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