我有一个数据库,我想用它来为我正在使用Xcode的应用程序创建一个数组。我正在按照我在互联网上找到的教程here,我按照说明操作,但我的页面显示内部服务器错误。我假设我没有正确更改以下代码中的信息。另外,我的网站主机使用MYSQL而不是MYSQLite,所以我不知道在代码中要更改“new mysqli”的内容。出于显而易见的原因,我省略了数据库信数据库有一个名为“描述”的表,列标记为1-50,分配了不同的值。
<?php
class RedeemAPI {
private $db;
// Constructor - open DB connection
function __construct() {
$this->db = new mysqli('hostname', 'Username', 'Pass', 'Database Name');
$this->db->autocommit(FALSE);
}
// Destructor - close DB connection
function __destruct() {
$this->db->close();
}
// Main method to redeem a code
function redeem() {
// Print all codes in database
$stmt = $this->db->prepare('SELECT 1 FROM descriptions');
$stmt->execute();
$stmt->bind_result($1);
while ($stmt->fetch()) {
echo "$1";
}
$stmt->close();
}
}
// This is the first thing that gets called when this page is loaded
// Creates a new instance of the RedeemAPI class and calls the redeem method
$api = new RedeemAPI;
$api->redeem();
?>
答案 0 :(得分:4)
PHP变量必须以字母或_
开头,因此您的错误源于此声明:
$stmt->bind_result($1);
将变量名称更改为$ col1或任何有意义的名称。
此外,您的select
语句将返回单个值:1。您可能意味着这样做:
SELECT * FROM descriptions
另外两点:
答案 1 :(得分:0)
内部服务器错误500可能掩盖了一些可能有帮助的可爱错误消息。在php.ini / php5.ini
中切换调试将此添加到您的php.ini / php5.ini或只是将其中一个文件添加到您的网站的根目录应该做的伎俩
display_errors = On
display_startup_errors = On
error_reporting = -1
其次,如果你的主机没有运行MYSQLi,那么他们正在运行真正的旧php,因为MYSQLi是php4.1.3及以上版本的标准
第三,那个SQL语句..它只是某种粗略的例子还是你的实际陈述?如果您要尝试拉出一条记录,那么它应该是
SELECT * FROM tablename.description LIMIT 1
始终最好地使您的陈述非常透彻