PHP-通过PHP代码插入db MySql
我不知道为什么,我不能在db表中插入新行 我使用这个查询:PHP-通过PHP代码插入db MySql,php,mysql,insert,Php,Mysql,Insert,我不知道为什么,我不能在db表中插入新行 我使用这个查询: $db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ($esiti, $esitiPositivi, $esitiNegativi,$ambi,$nTerni,$terno,$sestinaString )"); 变量在前面声明,它们是int和string
$db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ($esiti, $esitiPositivi, $esitiNegativi,$ambi,$nTerni,$terno,$sestinaString )");
变量在前面声明,它们是int和string。
如果我在sql查询中使用相同的查询,它就会工作。
我正在使用调试,没有错误。软件执行查询并继续
我尝试了类似的查询,如:
$db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ('$esiti', '$esitiPositivi', '$esitiNegativi','$ambi','$nTerni','$terno','$sestinaString' )");
但没什么,都一样
我还尝试了对另一个表的另一个查询(通过php),它可以工作。所以问题就出在这个查询中
如果你需要更多的信息,问我
编辑:
这是我对表和变量的定义
$esiti = $sestinaObj[0][1];
$esitiPositivi = $sestinaObj[1][1];
$esitiNegativi = $sestinaObj[2][1];
$nTerni = $sestinaObj[3][1];
$ambi = $sestinaObj[4][1];
$sestina = $sestinaObj[5][1];
$colpi = $sestinaObj[6][1];
$terno = $sestinaObj[7][1];
我知道我可以直接在查询中使用$sestinaObj
$esiti = mysql_real_escape_string($esiti);
$db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ('$esiti', '$esitiPositivi', '$esitiNegativi','$ambi','$nTerni','$terno','$sestinaString' )");
这就是方法
function isMyComposition($ventiCinqueEstraz, $quad, $successive, $db, $myYear){
$db = new DBM();
// if(count($ventiCinqueEstraz) <= 25) return false;
$sestina = array(0,0,0,0,0,0);
$colpi = 0;
$count = 0;
$posizione = 0;
while($count < 2){
for($i=0; $i<25; $i++){//NON FUNZIONA
$sestinaObj= array(
array("esiti",0),
array("esitiPositivi",0),
array("esitiNegativi",0),
array("nterni",0),
array("ambi",0),
array("sestina",array(0,0,0,0,0,0)),
array("colpi",0),
array("terno",0)
);
$sestina = addOccurenceComp($quad, $sestina, array( $ventiCinqueEstraz[$count][$i]['uno'],
$ventiCinqueEstraz[$count][$i]['due'],
$ventiCinqueEstraz[$count][$i]['tre'],
$ventiCinqueEstraz[$count][$i]['quattro'],
$ventiCinqueEstraz[$count][$i]['cinque']),$db,$myYear);
$result = $db->read("SELECT sestina FROM sest$myYear where sestina = $sestina ");
for($j=25; $j<50; $j++){
$sestinaObj = checkSestina($sestinaObj, $sestina, $quad, $colpi, $posizione, array( $ventiCinqueEstraz[$count][$j]['uno'],
$ventiCinqueEstraz[$count][$j]['due'],
$ventiCinqueEstraz[$count][$j]['tre'],
$ventiCinqueEstraz[$count][$j]['quattro'],
$ventiCinqueEstraz[$count][$j]['cinque']),$db,$myYear);
}
$esiti = $sestinaObj[0][1];
$esitiPositivi = $sestinaObj[1][1];
$esitiNegativi = $sestinaObj[2][1];
$nTerni = $sestinaObj[3][1];
$ambi = $sestinaObj[4][1];
$sestina = $sestinaObj[5][1];
$colpi = $sestinaObj[6][1];
$terno = $sestinaObj[7][1];
if(count($result) <= 0){
$insertResultTerni = $db->read("SELECT Colpi from terni where colpi = $colpi");
if($insertResultTerni[0]['Colpi'] == "")
$db->write("INSERT INTO terni (colpi) values ($colpi)");
$sestinaString = implode(" ",$sestina);
$db->write("INSERT INTO sest2016 (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ($esiti, $esitiPositivi, $esitiNegativi,$ambi,$nTerni,$terno,$sestinaString )");
}
else {
$insertResultTerni = $db->write("INSERT INTO terni (colpi) values ($colpi)");
$esiti = mysql_real_escape_string($esiti);
$db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES (0,0,0,0,0,0,0)");
}
}
$count++;
}
}
这是表定义
如果变量包含字符串值,且该字符串包含引号,则必须转义该引号。假设您插入的$esiti等于John O'Hara,则在构造查询时必须转义引号
$esiti = mysql_real_escape_string($esiti);
$db->write("INSERT INTO sest$myYear (esiti, esitiPositivi, esitiNegativi, ambi, nTerni, terno, sestina) VALUES ('$esiti', '$esitiPositivi', '$esitiNegativi','$ambi','$nTerni','$terno','$sestinaString' )");
注意:mysql\u real\u escape\u字符串在反斜杠前面加上以下字符:\x00、\n、\r、\、',“和\x1a。是否检查错误?Mysql会告诉您是否有sql错误,php会告诉您是否有语法错误。请尝试
echo
ing语句到屏幕-检查明显的错误,并尝试在Mysql客户端中运行查询您是否在任何地方提交更改?@johncode是我检查了错误,但没有任何更改。我没有任何错误。@RamRaider我试着在循环中回音,但不起作用。所以我在页面开始时尝试过,所有变量都为0,但没有错误…嗨,我尝试过你的代码,但都是一样的$esiti没有引用或类似的内容。。。所以可能还有另一个问题,但我不知道……我尝试插入这个查询:$db->write(“插入sest$myYear(esiti、esitiPositivi、esitiNegativi、ambi、INTERNI、terno、sestina)值(0,0,0,0,0,0)”;但没什么,它不起作用:(