我的提供商在SQL版本更新后,PHP代码不再起作用了吗?

时间:2015-01-12 11:25:13

标签: php mysql sql-server sql-insert

我有一个http-bridge,用于在Second Life应用程序和数据库之间交换信息。它工作正常但最近在我的提供程序将我的数据库的SQL版本更改为 5.5.38 后停止了。这是我的旧PHP脚本的一个例子:

<?php
$con=mysqli_connect("DB_HOSTNAME","DB_USERNAME","DB_PASSWORD", "DB_DATABASE");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$PKey = mysqli_real_escape_string($con, $_GET['playerKey']);
$HKey = mysqli_real_escape_string($con, $_GET['hudKey']);  

echo $HKey, " and " , $PKey;

$sql="INSERT INTO test (HKey, PKey)
VALUES ('$HKey', '$PKey')";

echo $sql . '<br/>'; 

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?> 

我收到以下错误消息:

  

错误:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'-get(HKey,PKey)VALUES附近使用正确的语法('XXXXXXX-fe56-XXXX-4bea-XXXXXXXXX','XXXXXX'在第1行

我试过使用这个插入语句,我在Stack Overflow上发表了一篇文章:

$stmt = $mysqli->prepare("INSERT INTO test (HKey, PKey) VALUES (?, ?)");
$stmt->bind_param("ss", $HKey, $PKey);
$stmt->execute();

但是当我插入那行代码时,它也不起作用,我根本没有收到任何错误信息。

2 个答案:

答案 0 :(得分:3)

right syntax to use near '-get (HKey, PKey)

您发布的内容vvv 会抛出该错误。

INSERT INTO test (HKey, PKey)
  

&#34;嗨弗雷德,你真的很擅长猜测。我的表名包含一个连字符。&#34;

您的表名包含连字符。 (而我不是猜测,错误告诉我

我怎么能说出来?

  • 很清楚。您拥有HKey和PKey的列名,并且在您发布的错误中的列名前面看到-get。< / p>

  • 语法:INSERT INTO table (column_1, column_2) VALUES ('value_1', 'value_2')

  • table =你的table-get,column_1 =你的HKey,column_2 =你的PKey

如果您的表被调用&#34; table-get&#34;例如,然后MySQL将其解释为&#34;表减去得到&#34;。

要么在表名周围使用反引号,要么将其重命名为&#34; table_get&#34;使用下划线。

即:

INSERT INTO `table-get` (HKey, PKey)

或在不使用刻度线的情况下重命名(如果它不包含空格或保留字)

INSERT INTO table_get (HKey, PKey)

阅读标识符限定符:

另外,正如Halfer在评论中所述:

&#34;我无法看到您正在使用的代码,正如Fred所说,我无法看到它是如何工作的。它应该已经破坏了以前的MySQL服务器版本。&#34;

  • 我也同意。

发布问题的提示:

每当发布问题并且不想出于某种原因发布实际代码时,至少发布一个好的代表。

例如:

INSERT INTO test-get (HKey, PKey)

至少每个人都可以通过伪代码判断错误的位置。

  • 让事情更清晰。

答案 1 :(得分:1)

(代表OP发表答案)。

好的,错误不是我的服务提供商,而是我使用包含hyphan的新表。这是我的第一篇文章,我犯了错误,因为不发布100%的原始代码而使每个人感到困惑。我已经学会了我的教训并且再也不会那样做了。对于每个觉得自己浪费时间的人都很抱歉。无论如何它帮助我整理错误。