2013-01-09 15 views
0

有人能解釋爲什麼這給我以下錯誤?MySQL錯誤疑難解答 - 表單,PHP和MySQL

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用手動 附近「)」在行1

我沒有試過所有的垃圾Dreamweaver中重新創建增加了,但我不完全理解如何提交表單並讓它將變量傳遞給我的查詢。代碼Dreamweaver對我來說很困惑,我無法弄清楚在不打破整個程序的情況下我可以刪除什麼。

<?php require_once('Connections/hh.php'); ?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 
} 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
    $insertSQL = sprintf("INSERT INTO data_customer (first_name, last_name) VALUES (%s, %s)", 
         GetSQLValueString($_POST['first_name'], "text"), 
         GetSQLValueString($_POST['last_name'], "text")); 

    mysql_select_db($database_hh, $hh); 
    $Result1 = mysql_query($insertSQL, $hh) or die(mysql_error()); 

$cid = mysqli_insert_id(); 

    $insertSQL = sprintf("INSERT INTO data_phone_number (phone_number) VALUES (%s)", 
         GetSQLValueString($_POST['phone_number'], "text")); 

    mysql_select_db($database_hh, $hh); 
    $Result1 = mysql_query($insertSQL, $hh) or die(mysql_error()); 

$pid = mysqli_insert_id(); 

    $insertSQL = sprintf("INSERT INTO join_customer_phone (customer_id, phone_id) VALUES ($cid, $pid)"); 
    mysql_select_db($database_hh, $hh); 
    $Result1 = mysql_query($insertSQL, $hh) or die(mysql_error()); 

} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1"> 
<table align="center"> 
    <tr valign="baseline"> 
    <td nowrap="nowrap" align="right">First_name:</td> 
    <td><input type="text" name="first_name" value="" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Last_name:</td> 
    <td><input type="text" name="last_name" value="" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
    <td nowrap="nowrap" align="right">Phone_number:</td> 
    <td><input type="text" name="phone_number" value="" size="32" /></td> 
    </tr> 
    <tr valign="baseline"> 
    <td nowrap="nowrap" align="right">&nbsp;</td> 
    <td><input type="submit" value="Insert record" /></td> 
    </tr> 
</table> 
<input type="hidden" name="MM_insert" value="form1" /> 
</form> 
<p>&nbsp;</p> 
</body> 
</html> 
+0

打印結果查詢正在執行回聲或其他東西。當然,這是意想不到的,導致錯誤的判決。 – Alfabravo

+0

嗯,你的意思是,只需要替換sprintf(帶回聲?對不起,我正在學習,很容易陷入這樣的困境,我能找到的每個例子都只是處理多對一的關係;你可以在任何人都可以參考這個主題的教程嗎? –

回答

0

你爲什麼不只是嘗試:

$insertSQL = "INSERT INTO data_customer (first_name, last_name) VALUES ('" . 
         GetSQLValueString($_POST['first_name'], "text") . "', '" . 
         GetSQLValueString($_POST['last_name'], "text") . "';"; 

如果它不工作,然後把你的%s S IN '這些' 括號。我確信你應該把數值放在括號內。

+0

謝謝,@JohnyPHP - 我試着用這兩種建議的每一種方式,但仍然有錯誤。引用或那些看起來像單引號的其他東西? –

+0

全局規則:'='之後的任何內容都應該用單引號括起來,那些正好在輸入按鈕附近,如果仍然出錯,var_dump()查詢,你會100%看到這個問題,你也可以在這裏顯示你的查詢, – Ivan

0

你在混合mysql函數和mysqli函數。堅持mysqli(因爲mysql已被棄用)。

+0

還沒有,將會在5.5 – enrey

+1

10無論如何,這兩者不應該混合使用,而且mysqli更加面向未來。 – asmecher

+0

完全同意...我只是拖釣,對不起:) – enrey