使用php获取MySQL错误

时间:2013-12-14 22:03:55

标签: php mysql sql

我正在使用for循环遍历数组并尝试在phpmyadmin中将数据库中的字段命名为。表已创建,但我的字段名称没有。有这个原因吗?

起初我以为是因为每个数组中的空格所以我用“_”替换它。

这是我的代码:

<?php
include 'simple_html_dom.php';
include ('connection.php');


function getsquad($url, $tablename){

$html = file_get_html($url);

$player_fromsite = array();

$space = ' ';
$replacespace = '_';

$player = array();

foreach($html->find('td[align=left]') as $element) {
   if ($element->children(0)) { // work only when children exists
          array_push($player_fromsite ,$element->children(0)->innertext);
   }
}

array_push($player, str_ireplace($space, $replacespace, $player_fromsite));
unset($player_fromsite);

$length = count($player);

for($i = 0;$i<=$length;$i++){
// Create a MySQL table in the selected database
mysql_query(" CREATE TABLE $tablename( 
$player[$i] VARCHAR(30) ) ") or die(mysql_error());  
}

echo "Table Created!";

}

$Squad = new squad();
$Squad->getsquad('site', 'Ars');

?>

我收到的错误消息是: “数组到字符串转换” “未定义的偏移量:1”

“您的SQL语法中有错误;请在第2行检查与您的MySQL服务器版本对应的手册,以便在'VARCHAR(30)'附近使用正确的语法'”

错误全部在一行“$ player [$ i] VARCHAR(30))”)或死(mysql_error());“

1 个答案:

答案 0 :(得分:2)

你必须改变这个:

for($i = 0;$i <= $length; $i++)

for($i = 0; $i < $length; $i++)

这是因为如果你有例如 5项的数组。键是: 0,1,2,3,4 ,这个for循环:for($i = 0;$i <= $length; $i++)重复,而变量$i更小 OR 等于数组计数(5)。因此,尝试使用键5从数组中获取值会引发错误。

并且您的上一个问题更改了此代码:

    array_push($player, str_ireplace($space, $replacespace, $player_fromsite)); unset($player_fromsite);

    $length = count($player);

    for($i = 0;$i<$length;$i++){  
mysql_query(" CREATE TABLE $tablename(  $player[$i] VARCHAR(30) ) ") or die(mysql_error());  
 }

到此:

foreach($player_fromsite as $player_name) {
  mysql_query("CREATE TABLE " . $tablename . "(" . str_replace($space, $replacespace, $player_name) . " VARCHAR(30))") or die(mysql_error());   
}

并删除该$player变量和unset($player_fromsite);代码。