我正在尝试运行两个stmt并将它们与php绑定。当我刚刚运行$stmt并删除所有$stmt2时,它工作得很好。我试图将“活动”列更改为零。基本上试图搜索和更新用户上传的所有其他图片并将其更改为零(因此它不是个人资料图片),只有最近的一张应该是活动的($active中的1)。
if (!$mysqli) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
echo $db;
exit;
}
try {
if (empty($_FILES['image'])) {
throw new Exception('Image file is missing');
}
$image = $_FILES['image'];
// check INI error
if ($image['error'] !== 0) {
if ($image['error'] === 1)
throw new Exception('Max upload size exceeded');
throw new Exception('Image uploading error: INI Error');
}
// check if the file exists
if (!file_exists($image['tmp_name']))
throw new Exception('Image file is missing in the server');
$maxFileSize = 2 * 10e6; // in bytes
if ($image['size'] > $maxFileSize)
throw new Exception('Max size limit exceeded');
// check if uploaded file is an image
$imageData = getimagesize($image['tmp_name']);
if (!$imageData)
throw new Exception('Invalid image');
$mimeType = $imageData['mime'];
// validate mime type
$allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($mimeType, $allowedMimeTypes))
throw new Exception('Only JPEG, PNG and GIFs are allowed');
// nice! it's a valid image
// get file extension (ex: jpg, png) not (.jpg)
$fileExtention = strtolower(pathinfo($image['name'] ,PATHINFO_EXTENSION));
// create random name for your image
$fileName = round(microtime(true)) . mt_rand() . '.' . $fileExtention; // anyfilename.jpg
// Create the path starting from DOCUMENT ROOT of your website
$path = '/php/image_upload/images/' . $fileName;
// file path in the computer - where to save it
$destination = $_SERVER['DOCUMENT_ROOT'] . $path;
if (move_uploaded_file($image['tmp_name'], $destination)) {
// create the url
$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
$domain = $protocol . $_SERVER['SERVER_NAME'];
$url = $domain . $path;
$active = 1;
$mysqli->autocommit(FALSE);
$stmt2 = $mysqli->prepare('UPDATE image_uploads SET active = ? WHERE user_id = ?');
$stmt = $mysqli -> prepare('INSERT INTO image_uploads (url, active, user_id) VALUES (?, ?, ?)');
if (
$stmt &&
$stmt2 &&
$stmt2 -> bind_param('ii', 0, $_SESSION['id']) &&
$stmt -> bind_param('sii', $url, $_SESSION['id'], $active) &&
$stmt2 -> execute() &&
$stmt -> execute()
) {
exit(
json_encode(
array(
'status' => true,
'url' => $url
)
)
);
} else {
throw new Exception('Error in saving into the database');
}
}
} catch (Exception $e) {
exit(json_encode(
array (
'status' => false,
'error' => $e -> getMessage()
)
));
}
你可能忘了关闭这里
} else
throw new Exception('Error in saving into the database');
应该是
} else
throw new Exception('Error in saving into the database');
}
更新:
我没有注意到你更新了代码。
问题在这行:< code > $ maxFileSize = 2 * 10e6
应该是$maxFile大小=2*1024;
问题内容: 嗨,我正在尝试学习使用准备好的语句来避免SQL注入等的正确方法。 当我执行脚本时,我从脚本中收到一条消息,提示已插入0行,我希望这表示已插入1行,并且当然会更新表。我不完全确定自己准备好的陈述,因为我已经做过一些研究,我的意思是每个例子都各不相同。 更新表格时,我需要声明所有字段吗?还是只更新一个字段就可以了? 任何信息将非常有帮助。 index.php classes / class
可能重复: dbcp中的已准备语句池 我正在构建一个Web应用程序,它使用Tomcat的数据库连池机制进行内部使用。我试图汇集准备好的语句,以便应用程序在检索数据时更有效。 据我所知,当连接、结果集和语句关闭时,连接将返回到池。如果设置了适当的标志,放弃的连接也会关闭并返回到池中。关闭连接意味着释放所有数据库游标和缓存的语句,包括准备好的语句。那么准备好的语句池有什么意义呢?
3. 登录与准备 3.1. 浏览器及网络要求 在课堂开始前,需先检查浏览器及网络配置是否符合要求,如下: 浏览器要求 谷歌Chrome浏览器,版本V55.0及以上。 网络环境要求 上行带宽达到 2Mbps 或以上,测速工具:http://www.speedtest.net 3.2. 登录课堂 打开管理后台提供的课堂地址,输入昵称和密码登录课堂。 昵称 可自定义名称,名称将会在视频窗口及聊天中显示。
在正式使用Yearning前,你需要先设置如下setup(请务必花几分钟时间阅读!)。 创建用户并确认其角色 创建权限组并将权限组赋予给对应的用户 添加数据源信息 为数据源创建自定义审核规则 在设置页面配置各项配置信息 根据需求调整自定义审核规则 创建用户并确认其角色 创建用户 在Yearning中用户可以通过以下方式创建: 在 管理->用户 页面admin用户自行创建用户。 打开 管理->设置
学习AngularJS的一个好方法是逐步完成本教程,它将引导您构建一个完整的AngularJS web应用程序。 该web应用是一个Android设备清单的目录列表,您可以筛选列表以便查看您感兴趣的设备,然后查看设备的详细信息。 本教程将向您展示AngularJS怎样使得web应用更智能更灵活,而且不需要各种扩展程序或插件。 通过本教程的学习,您将: 阅读示例学习怎样使用AngularJS的客户端
问题内容: 引用MySQL INSERT手册-UPDATE也一样: 使用关键字DEFAULT可以将列明确设置为其默认值。这使编写INSERT语句(为少数几个列分配值)更加容易,因为它使您避免编写不完整的VALUES列表,该列表不包含表中每个列的值。否则,您将不得不写出与VALUES列表中的每个值相对应的列名列表。 简而言之,如果我写 插入新的一列,并将column2设置为其默认值(无论它是多少)。