我对mysql没有任何经验,并且在这行代码中不断出错:
$sql= "INSERT INTO songs (unique_show_id, artist, date, year, city, state, venue, taper, transfered_by, source, mic_loc, lineage, uploaded_by, uploaded_on, show_notes, show_xml)
VALUES('$showId', '$artist', '$showDate', '$year, '$city', '$state', '$venue', '$taper', '$transferer', '$source', '$mic_loc', '$lineage', '$uploader', NOW(), '$show_notes', '$show_xml')";
//check to see if the query went through
if (!mysql_query($sql,$con)){
echo "query fail";
die('Error: ' . mysql_error());
}
我确定这是一种简单化的东西,但我看不出错误在哪里。我得到的错误信息是:
query failError: 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 'ipuhgbi', 'CA', '', '', '', '', '', '', 'danwoods', NOW(), '', '<show id=\'gm198' at line 2
我插入的一些值是NULL,但是根据我的阅读,我认为这不应该是一个问题。有什么想法吗?
答案 0 :(得分:4)
$year
之后缺少引用。
当MySQL发出这样的错误时(bla bla bla附近),错误通常在它提到的字符串之前。在这种情况下,'ipuhgbi'映射到$ city,所以你知道它在'$ city'之前,我们在那里看到了什么? Voila,缺少引用。
答案 1 :(得分:0)
您需要在每个$变量中使用mysql_real_escape_string()
。
另外,关于SQL注入的read this StackOverflow question carefully 。
答案 2 :(得分:0)
看起来错误行的最后一个单引号未被转义。
你需要记住清理进入查询的所有字符串。
答案 3 :(得分:0)
您需要确定的事情很少:
对数字使用intval,对字符串使用mysql_real_escaps_string以避免注入问题以及单引号查询错误。
插入表格set ='field_value',field2 ='field_value'//等等